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 05 MySQL
MySQL官方导出工具mysqlpump的使用
May 21 MySQL
你知道哪几种MYSQL的连接查询
Jun 03 MySQL
MySQL系列之开篇 MySQL关系型数据库基础概念
Jul 02 MySQL
QT连接MYSQL数据库的详细步骤
Jul 07 MySQL
SQL实战演练之网上商城数据库商品类别数据操作
Oct 24 MySQL
MySQL慢查询优化解决问题
Mar 17 MySQL
WINDOWS 64位 下安装配置mysql8.0.25最详细的教程
Mar 22 MySQL
聊聊mysql都有哪几种分区方式
Apr 13 MySQL
以MySQL5.7为例了解一下执行计划
Apr 13 MySQL
MySQL数据库Innodb 引擎实现mvcc锁
May 06 MySQL
MySQL串行化隔离级别(间隙锁实现)
Jun 16 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读取XML值的代码(推荐)
2011/01/01 PHP
基于PHP读取csv文件内容的详解
2013/06/18 PHP
函数中使用require_once问题深入探讨 优雅的配置文件定义方法推荐
2014/07/02 PHP
对比PHP对MySQL的缓冲查询和无缓冲查询
2016/07/01 PHP
Riot.js 快速的JavaScript单元测试框架
2009/11/09 Javascript
javascript实现的基于金山词霸网络翻译的代码
2010/01/15 Javascript
jquery提交form表单时禁止重复提交的方法
2014/02/13 Javascript
js中自定义方法实现停留几秒sleep
2014/07/11 Javascript
AngularJS入门教程(一):静态模板
2014/12/06 Javascript
简单实现JS对dom操作封装
2015/12/02 Javascript
AngularJS入门教程之双向绑定详解
2016/08/18 Javascript
浅析Javascript的自动分号插入(ASI)机制
2016/09/29 Javascript
AngularJS实现网站换肤实例
2021/02/19 Javascript
Bootstrap 3 按钮标签实例代码
2017/02/21 Javascript
Bootstrap fileinput文件上传组件使用详解
2017/06/06 Javascript
JavaScript标准对象_动力节点Java学院整理
2017/06/27 Javascript
微信小程序 rich-text的使用方法
2017/08/04 Javascript
JS点击动态添加标签、删除指定标签的代码
2018/04/18 Javascript
Node.Js中实现端口重用原理详解
2018/05/03 Javascript
在vue中使用vue-echarts-v3的实例代码
2018/09/13 Javascript
关于vue路由缓存清除在main.js中的设置
2019/11/06 Javascript
在vue中使用Echarts画曲线图的示例
2020/10/03 Javascript
[01:12:27]EG vs Secret 2018国际邀请赛淘汰赛BO3 第二场 8.22
2018/08/23 DOTA
python字符串编码识别模块chardet简单应用
2015/06/15 Python
终端命令查看TensorFlow版本号及路径的方法
2018/06/13 Python
Python enumerate函数遍历数据对象组合过程解析
2019/12/11 Python
Django用内置方法实现简单搜索功能的方法
2020/12/18 Python
欧洲著名的珠宝和手表网上商城:uhrcenter
2017/04/10 全球购物
美国健康和保健平台:healtop
2020/07/02 全球购物
学生会主席事迹材料
2014/01/28 职场文书
军训学生自我鉴定
2014/02/12 职场文书
个人工作主要事迹
2014/05/08 职场文书
小学重阳节活动总结
2015/03/24 职场文书
2015年农村党员干部主题教育活动总结
2015/03/25 职场文书
先进个人主要事迹范文
2015/11/04 职场文书
高中数学课堂教学反思
2016/02/18 职场文书