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死锁和分库分表问题详解
Apr 16 MySQL
MySQL8.0.24版本Release Note的一些改进点
Apr 22 MySQL
MySQL分库分表与分区的入门指南
Apr 22 MySQL
解决MySQL存储时间出现不一致的问题
Apr 28 MySQL
MySQL时间盲注的五种延时方法实现
May 18 MySQL
详细聊聊MySQL中慢SQL优化的方向
Aug 30 MySQL
MySQL分区表管理命令汇总
Mar 21 MySQL
详解MySQL的主键查询为什么这么快
Apr 03 MySQL
以MySQL5.7为例了解一下执行计划
Apr 13 MySQL
MySQL中的全表扫描和索引树扫描
May 15 MySQL
MySQL分布式恢复进阶
Jul 23 MySQL
mysql数据库如何转移到oracle
Dec 24 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
探讨多键值cookie(php中cookie存取数组)的详解
2013/06/06 PHP
基于GD2图形库的PHP生成图片缩略图类代码分享
2015/02/08 PHP
PHP使用file_get_content设置头信息的方法
2016/02/14 PHP
thinkphp5框架结合mysql实现微信登录和自定义分享链接与图文功能示例
2019/08/13 PHP
仿163填写邮件地址自动显示下拉(无优化)
2008/11/05 Javascript
Javascript获取窗口(容器)的大小及位置参数列举及简要说明
2012/12/09 Javascript
前台js改变Session的值(用ajax实现)
2012/12/28 Javascript
jQuery实现360°全景拖动展示
2015/03/18 Javascript
JavaScript中getUTCSeconds()方法的使用详解
2015/06/11 Javascript
jQuery插件EasyUI校验规则 validatebox验证框
2015/11/29 Javascript
Bootstrap3制作搜索框样式的方法
2016/07/11 Javascript
js实现网页定位导航功能
2017/03/07 Javascript
jQuery实现可兼容IE6的遮罩功能详解
2017/09/19 jQuery
jquery实现楼层滚动效果
2018/01/01 jQuery
Angular5.0 子组件通过service传递值给父组件的方法
2018/07/13 Javascript
Vue实现按钮级权限方案
2019/11/21 Javascript
[49:29]LGD vs Winstrike 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/18 DOTA
Python编写检测数据库SA用户的方法
2014/07/11 Python
Python实现将sqlite数据库导出转成Excel(xls)表的方法
2017/07/17 Python
Python中input与raw_input 之间的比较
2017/08/20 Python
python实现基于信息增益的决策树归纳
2018/12/18 Python
Python 3.6 -win64环境安装PIL模块的教程
2019/06/20 Python
django echarts饼图数据动态加载的实例
2019/08/12 Python
Python argparse模块应用实例解析
2019/11/15 Python
css3和jquery实现的可折叠导航菜单适合放在手机网页的导航菜单
2014/09/02 HTML / CSS
CSS3之transition实现下划线的示例代码
2018/05/30 HTML / CSS
详解HTML5 LocalStorage 本地存储
2016/12/23 HTML / CSS
尤为Wconcept中国官网:韩国设计师品牌服饰
2019/01/10 全球购物
俄语专业毕业生推荐信
2013/10/28 职场文书
法律专业推荐信范文
2013/11/29 职场文书
中学生自我鉴定
2014/02/04 职场文书
四年级学生评语大全
2014/04/21 职场文书
个人维稳承诺书
2015/05/04 职场文书
2015年乡镇科普工作总结
2015/05/13 职场文书
Mysql 如何合理地统计一个数据库里的所有表的数据量
2022/04/18 MySQL
windows系统安装配置nginx环境
2022/06/28 Servers