Mysql如何查看是否使用到索引


Posted in MySQL onDecember 24, 2022

Mysql查看是否使用到索引

mysql数据库创建索引优化之后,在查询时想看下是否使用到索引,

使用执行计划查看:

mysql> explain  SELECT * FROM tb_user
 WHERE STATUS=1 limit 0,20;
+----+-------------+----------------+------------+------+----------------------+----------------------+---------+-------+-------+----------+-------+
| id | select_type | table          | partitions | type | possible_keys        | key                  | key_len | ref   | rows  | filtered | Extra |
+----+-------------+----------------+------------+------+----------------------+----------------------+---------+-------+-------+----------+-------+
|  1 | SIMPLE      | tb_news_online | NULL       | ref  | idx_tb_news_online_9 | idx_tb_news_online_9 | 5       | const | 99494 |      100 | NULL  |
+----+-------------+----------------+------------+------+----------------------+----------------------+---------+-------+-------+----------+-------+
1 row in set
 
mysql> 

EXPLAIN列的解释

  • table:显示这一行的数据是关于哪张表的
  • type:这是重要的列,显示连接使用了何种类型。从最好到最差的连接类型为const、eq_reg、ref、range、index和ALL
  • type显示的是访问类型,是较为重要的一个指标,结果值从好到坏依次是:system > const > eq_ref > ref > fulltext > ref_or_null > index_merge > unique_subquery > index_subquery > range > index > ALL ,一般来说,得保证查询至少达到range级别,最好能达到ref。
  • possible_keys:显示可能应用在这张表中的索引。如果为空,没有可能的索引。可以为相关的域从WHERE语句中选择一个合适的语句
  • key:实际使用的索引。如果为NULL,则没有使用索引。很少的情况下,MYSQL会选择优化不足的索引。这种情况下,可以在SELECT语句中使用USE INDEX(indexname)来强制使用一个索引或者用IGNORE INDEX(indexname)来强制MYSQL忽略索引
  • key_len:使用的索引的长度。在不损失精确性的情况下,长度越短越好
  • ref:显示索引的哪一列被使用了,如果可能的话,是一个常数
  • rows:MYSQL认为必须检查的用来返回请求数据的行数
  • Extra:关于MYSQL如何解析查询的额外信息。将在表4.3中讨论,但这里可以看到的坏的例子是Using temporary和Using filesort,意思MYSQL根本不能使用索引,结果是检索会很慢

MySQL查看索引使用情况

show status like 'Handler_read%';    
 
show global status like 'Handler_read%';

Mysql如何查看是否使用到索引

  • Handler_read_first:索引中第一条被读的次数。如果较高,表示服务器正执行大量全索引扫描(这个值越低越好)。
  • Handler_read_key:如果索引正在工作,这个值代表一个行被索引值读的次数,如果值越低,表示索引得到的性能改善不高,因为索引不经常使用(这个值越高越好)。
  • Handler_read_next :按照键顺序读下一行的请求数。如果你用范围约束或如果执行索引扫描来查询索引列,该值增加。
  • Handler_read_prev:按照键顺序读前一行的请求数。该读方法主要用于优化ORDER BY ... DESC。
  • Handler_read_rnd :根据固定位置读一行的请求数。如果你正执行大量查询并需要对结果进行排序该值较高。你可能使用了大量需要MySQL扫描整个表的查询或你的连接没有正确使用键。这个值较高,意味着运行效率低,应该建立索引来补救。
  • Handler_read_rnd_next:在数据文件中读下一行的请求数。如果你正进行大量的表扫描,该值较高。通常说明你的表索引不正确或写入的查询没有利用索引。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持三水点靠木。

MySQL 相关文章推荐
详解MySQL InnoDB存储引擎的内存管理
Apr 08 MySQL
MySQL时间设置注意事项的深入总结
May 06 MySQL
MySQL sql_mode的使用详解
May 08 MySQL
Mysql systemctl start mysqld报错的问题解决
Jun 03 MySQL
MySQL中连接查询和子查询的问题
Sep 04 MySQL
MySQL之select、distinct、limit的使用
Nov 11 MySQL
浅谈mysql哪些情况会导致索引失效
Nov 20 MySQL
分享mysql的current_timestamp小坑及解决
Nov 27 MySQL
为什么MySQL8新特性会修改自增主键属性
Apr 18 MySQL
MySQ InnoDB和MyISAM存储引擎介绍
Apr 26 MySQL
Mysql表数据比较大情况下修改添加字段的方法实例
Jun 28 MySQL
MySQL添加索引特点及优化问题
Jul 23 MySQL
MySQL新手入门进阶语句汇总
Sep 23 #MySQL
MySQL下载安装配置详细教程 附下载资源
Sep 23 #MySQL
SQLyog的下载、安装、破解、配置教程(MySQL可视化工具安装)
Sep 23 #MySQL
mysql通过group by分组取最大时间对应数据的两种有效方法
Sep 23 #MySQL
MySQL中dd::columns表结构转table过程及应用详解
Sep 23 #MySQL
MySQL使用IF语句及用case语句对条件并结果进行判断 
Sep 23 #MySQL
MySQL远程无法连接的一些常见原因总结
Sep 23 #MySQL
You might like
php dirname(__FILE__) 获取当前文件的绝对路径
2011/06/28 PHP
跟我学Laravel之路由
2014/10/15 PHP
PHP实现针对日期,月数,天数,周数,小时,分,秒等的加减运算示例【基于strtotime】
2017/04/19 PHP
PHP更安全的密码加密机制Bcrypt详解
2017/06/18 PHP
laravel 修改记住我功能的cookie保存时间的方法
2019/10/14 PHP
TP5框架model常见操作示例小结【增删改查、聚合、时间戳、软删除等】
2020/04/05 PHP
js实时获取系统当前时间实例代码
2013/06/28 Javascript
js控制table合并具体实现
2014/02/20 Javascript
localResizeIMG先压缩后使用ajax无刷新上传(移动端)
2015/08/11 Javascript
jQuery插件Validate实现自定义校验结果样式
2016/01/18 Javascript
详谈JS中实现种子随机数及作用
2016/07/19 Javascript
利用Angularjs和原生JS分别实现动态效果的输入框
2016/09/01 Javascript
原生js实现可拖动的登录框效果
2017/01/21 Javascript
Vue2递归组件实现树形菜单
2017/04/10 Javascript
详解Angular 4.x Injector
2017/05/04 Javascript
详解webpack4之splitchunksPlugin代码包分拆
2018/12/04 Javascript
微信小程序网络层封装的实现(promise, 登录锁)
2019/05/08 Javascript
vue项目中运用webpack动态配置打包多种环境域名的方法
2019/06/24 Javascript
解决Element中el-date-picker组件不回填的情况
2020/11/07 Javascript
python制作填词游戏步骤详解
2019/05/05 Python
VSCode基础使用与VSCode调试python程序入门的图文教程
2020/03/30 Python
Pycharm 使用 Pipenv 新建的虚拟环境(图文详解)
2020/04/16 Python
Python读取二进制文件代码方法解析
2020/06/22 Python
Python持续监听文件变化代码实例
2020/07/22 Python
如何解决flask修改静态资源后缓存文件不能及时更改问题
2020/08/02 Python
美国最受欢迎的度假租赁网站:VRBO
2016/08/02 全球购物
美国最大的万圣节服装网站:HalloweenCostumes.com
2017/10/12 全球购物
爱尔兰电脑、家电和家具购物网站:Buy It Direct
2019/07/09 全球购物
土木工程毕业生推荐信
2013/10/28 职场文书
致跳远运动员广播稿
2014/02/11 职场文书
工地安全标语
2014/06/07 职场文书
房屋租赁委托书范本
2014/10/04 职场文书
部门经理迟到检讨书
2015/02/16 职场文书
班主任工作经验交流会总结
2015/11/02 职场文书
学生会2016感恩节活动小结
2016/04/01 职场文书
详解Go语言中配置文件使用与日志配置
2022/06/01 Golang