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和Oracle之间的误区
May 18 MySQL
MySQL连接查询你真的学会了吗?
Jun 02 MySQL
低版本Druid连接池+MySQL驱动8.0导致线程阻塞、性能受限
Jul 01 MySQL
mysql 索引合并的使用
Aug 30 MySQL
详细聊聊MySQL中慢SQL优化的方向
Aug 30 MySQL
Mysql中有关Datetime和Timestamp的使用总结
Dec 06 MySQL
MYSQL优化之数据表碎片整理详解
Apr 03 MySQL
为什么MySQL8新特性会修改自增主键属性
Apr 18 MySQL
MySQL去除密码登录告警的方法
Apr 20 MySQL
MySQL索引 高效获取数据的数据结构
May 02 MySQL
Mysql开启外网访问
May 15 MySQL
MySQL优化之慢日志查询
Jun 10 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用反撇号执行外部命令
2015/04/14 PHP
js 匿名调用实现代码
2009/06/19 Javascript
js文件中直接alert()中文出来的是乱码的解决方法
2016/11/01 Javascript
jQuery监听浏览器窗口大小的变化实例
2017/02/07 Javascript
JS如何实现动态添加的元素绑定事件
2019/11/12 Javascript
Vue.js实现大屏数字滚动翻转效果
2019/11/29 Javascript
jQuery实现弹出层效果
2019/12/10 jQuery
Ant Design的Table组件去除
2020/10/24 Javascript
python中使用百度音乐搜索的api下载指定歌曲的lrc歌词
2014/07/18 Python
使用Python标准库中的wave模块绘制乐谱的简单教程
2015/03/30 Python
python使用opencv进行人脸识别
2017/04/07 Python
DataFrame中的object转换成float的方法
2018/04/10 Python
python利用ffmpeg进行录制屏幕的方法
2019/01/10 Python
Python实现的栈、队列、文件目录遍历操作示例
2019/05/06 Python
使用pandas 将DataFrame转化成dict
2019/12/10 Python
tensorflow 限制显存大小的实现
2020/02/03 Python
python实现连连看游戏
2020/02/14 Python
Python实现病毒仿真器的方法示例(附demo)
2020/02/19 Python
Python中的sys.stdout.write实现打印刷新功能
2020/02/21 Python
驴妈妈旅游网:中国新型的B2C旅游电子商务网站
2016/08/16 全球购物
微软日本官方网站:Microsoft日本
2017/11/26 全球购物
卡西欧B级产品官方网站:Casio Outlet
2018/05/22 全球购物
Etam艾格英国官网:法国著名女装品牌
2019/04/15 全球购物
Nanushka官网:匈牙利服装品牌
2019/08/14 全球购物
波兰在线杂货店:Polski Koszyk
2019/11/02 全球购物
EJB3.1都有哪些改进
2012/11/17 面试题
关于中国梦的演讲稿
2014/04/23 职场文书
2014年辅导员工作总结
2014/11/18 职场文书
2015年元旦主持词开场白
2014/12/14 职场文书
学雷锋感言
2015/08/03 职场文书
公司要求试用期员工提交“述职报告”,该怎么写?
2019/07/17 职场文书
2019年预备党员的思想汇报:加深对党的认知
2019/09/25 职场文书
Go 自定义package包设置与导入操作
2021/05/06 Golang
一文搞懂php的垃圾回收机制
2021/06/18 PHP
Spring Cloud 中@FeignClient注解中的contextId属性详解
2021/09/25 Java/Android
python如何查找列表中元素的位置
2022/05/30 Python