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数据库千万级数据查询和存储
May 18 MySQL
MySQL 查询速度慢的原因
May 25 MySQL
解析MySQL binlog
Jun 11 MySQL
使用ORM新增数据在Mysql中的操作步骤
Jul 26 MySQL
SQL实现LeetCode(176.第二高薪水)
Aug 04 MySQL
关于MySQL中的 like操作符详情
Nov 17 MySQL
MySQL常见优化方案汇总
Jan 18 MySQL
解决MySQL报“too many connections“错误
Apr 19 MySQL
深入理解MySQL中MVCC与BufferPool缓存机制
May 25 MySQL
mysql数据库隔离级别详解
Jun 16 MySQL
mysql sql常用语句大全
Jun 21 MySQL
mysql拆分字符串作为查询条件的示例代码
Jul 07 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的SQL注入过程分析
2012/01/06 PHP
php发送html格式文本邮件的方法
2015/06/10 PHP
深入解析PHP中foreach语句控制数组循环的用法
2015/11/30 PHP
Centos 6.5下PHP 5.3安装ffmpeg扩展的步骤详解
2017/03/02 PHP
PHP设计模式之工厂方法设计模式实例分析
2018/04/25 PHP
JavaScript入门教程 Cookies
2009/01/31 Javascript
基于jquery的下拉框改变动态添加和删除表格实现代码
2020/09/12 Javascript
基于jquery的文章中所有图片width大小批量设置方法
2013/08/01 Javascript
28个常用JavaScript方法集锦
2015/01/14 Javascript
DOM基础教程之事件类型
2015/01/20 Javascript
JavaScript列表框listbox全选和反选的实现方法
2015/03/18 Javascript
jQuery遍历节点树方法分析
2016/09/08 Javascript
Vue.js组件tree实现省市多级联动
2016/12/02 Javascript
深入理解AngularJS中的ng-bind-html指令
2017/03/27 Javascript
Angular获取手机验证码实现移动端登录注册功能
2017/05/17 Javascript
nodejs制作爬虫实现批量下载图片
2017/05/19 NodeJs
node内置调试方法总结
2018/02/22 Javascript
关于vue的语法规则检测报错问题的解决
2018/05/21 Javascript
微信小程序实现留言板功能
2018/11/02 Javascript
使用puppeteer爬取网站并抓出404无效链接
2018/12/20 Javascript
详解Puppeteer前端自动化测试实践
2019/02/21 Javascript
详解一个基于套接字实现长连接的express
2019/03/28 Javascript
初学node.js中实现删除用户路由
2019/05/27 Javascript
小程序富文本提取图片可放大缩小
2020/05/26 Javascript
python中的列表推导浅析
2014/04/26 Python
python实现中文输出的两种方法
2015/05/09 Python
Python编程实现二分法和牛顿迭代法求平方根代码
2017/12/04 Python
浅析Python3 pip换源问题
2020/01/06 Python
python批量修改xml属性的实现方式
2020/03/05 Python
室内设计专业个人的自我评价
2013/10/19 职场文书
工艺员岗位职责
2014/02/11 职场文书
奥巴马竞选演讲稿
2014/05/15 职场文书
警察先进个人事迹材料
2014/05/16 职场文书
社区服务活动报告
2015/02/05 职场文书
MySQL 重写查询语句的三种策略
2021/05/10 MySQL
Spring Boot配合PageHelper优化大表查询数据分页
2022/04/20 Java/Android