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 ReplicaSet(副本集)简单介绍
Apr 24 MySQL
Mysql Online DDL的使用详解
May 20 MySQL
MySQL注入基础练习
May 30 MySQL
MySQL 常见存储引擎的优劣
Jun 02 MySQL
MySQL 数据恢复的多种方法汇总
Jun 21 MySQL
JMeter对MySQL数据库进行压力测试的实现步骤
Jan 22 MySQL
MySQL之MyISAM存储引擎的非聚簇索引详解
Mar 03 MySQL
MySQL优化常用的19种有效方法(推荐!)
Mar 17 MySQL
MySQL Server层四个日志的实现
Mar 31 MySQL
深入理解mysql事务隔离级别和存储引擎
Apr 12 MySQL
mysql 体系结构和存储引擎介绍
May 06 MySQL
MySQL 语句执行顺序举例解析
Jun 05 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
SONY SRF-40W电路分析
2021/03/02 无线电
基于文本的留言簿
2006/10/09 PHP
Discuz! 5.0.0论坛程序中加入一段js代码,让会员点击下载附件前自动弹出提示窗口
2007/04/18 PHP
Windows7下PHP开发环境安装配置图文方法
2010/05/20 PHP
thinkPHP框架通过Redis实现增删改查操作的方法详解
2019/05/13 PHP
php模拟实现斗地主发牌
2020/04/22 PHP
php判断IP地址是否在多个IP段内
2020/08/18 PHP
纯CSS3实现质感细腻丝滑按钮
2021/03/09 HTML / CSS
预加载css或javascript的js代码
2010/04/23 Javascript
js点击文本框后才加载验证码实例代码
2015/10/20 Javascript
javascript编程异常处理实例小结
2015/11/30 Javascript
js 性能优化之算法和流程控制
2017/02/15 Javascript
微信小程序 出现错误:{"baseresponse":{"errcode":-80002,"errmsg":""}}解决办法
2017/02/23 Javascript
VUE axios发送跨域请求需要注意的问题
2017/07/06 Javascript
微信小程序实现打开内置地图功能【附源码下载】
2017/12/07 Javascript
详解多页应用 Webpack4 配置优化与踩坑记录
2018/10/16 Javascript
ES6基础之 Promise 对象用法实例详解
2019/08/22 Javascript
解决VUE自定义拖拽指令时 onmouseup 与 click事件冲突问题
2020/07/24 Javascript
jQuery实现tab栏切换效果
2020/12/22 jQuery
Python中使用异常处理来判断运行的操作系统平台方法
2015/01/22 Python
python实现查找excel里某一列重复数据并且剔除后打印的方法
2015/05/26 Python
使用matplotlib绘制图例标签中带有公式的图
2019/12/13 Python
python不使用for计算两组、多个矩形两两间的iou方式
2020/01/18 Python
pytorch使用tensorboardX进行loss可视化实例
2020/02/24 Python
关于python 跨域处理方式详解
2020/03/28 Python
Python爬虫模拟登陆哔哩哔哩(bilibili)并突破点选验证码功能
2020/12/21 Python
完美解决IE8下不兼容rgba()的问题
2017/03/31 HTML / CSS
你在项目中用到了xml技术的哪些方面?如何实现的?
2014/01/26 面试题
学期自我鉴定
2013/11/04 职场文书
母亲80寿诞答谢词
2014/01/16 职场文书
企业文化标语口号
2014/06/09 职场文书
一份恶作剧的检讨书
2014/09/13 职场文书
2014年基层党支部工作总结
2014/12/04 职场文书
乔布斯辞职信(中英文对照)
2015/05/12 职场文书
2015年国庆晚会主持词
2015/07/01 职场文书
中学总务处工作总结
2015/08/12 职场文书