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 06 MySQL
分析mysql中一条SQL查询语句是如何执行的
Jun 21 MySQL
MySQL query_cache_type 参数与使用详解
Jul 01 MySQL
MySQL系列之四 SQL语法
Jul 02 MySQL
MySQL系列之九 mysql查询缓存及索引
Jul 02 MySQL
MySQL 聚合函数排序
Jul 16 MySQL
MySQL如何解决幻读问题
Aug 07 MySQL
一文弄懂MySQL中redo log与binlog的区别
Feb 15 MySQL
进阶篇之linux环境下安装MySQL数据库
Apr 09 MySQL
MySQL安装失败的原因及解决步骤
Jun 14 MySQL
Mysql中mvcc各场景理解应用
Aug 05 MySQL
MySQL常用慢查询分析工具详解
Aug 14 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 数组的合并、拆分、区别取值函数集
2010/02/15 PHP
WordPress开发中的get_post_custom()函数使用解析
2016/01/04 PHP
Thinkphp批量更新数据的方法汇总
2016/06/29 PHP
PHP编程文件处理类SplFileObject和SplFileInfo用法实例分析
2017/07/22 PHP
PHP实现验证码校验功能
2017/11/16 PHP
js资料prototype 属性
2007/03/13 Javascript
清华大学出版的事半功倍系列 javascript全部源代码
2007/05/04 Javascript
Jquery中Ajax 缓存带来的影响的解决方法
2011/05/19 Javascript
浅谈JavaScript中Date(日期对象),Math对象
2015/02/05 Javascript
功能强大的Bootstrap组件(结合js)
2016/08/03 Javascript
nodejs+express实现文件上传下载管理网站
2017/03/15 NodeJs
Vue.js2.0中的变化小结
2017/10/24 Javascript
jQuery EasyUI 选项卡面板tabs的使用实例讲解
2017/12/25 jQuery
Angular实现搜索框及价格上下限功能
2018/01/19 Javascript
vue实现裁切图片同时实现放大、缩小、旋转功能
2018/03/02 Javascript
vue-cli3.0配置及使用注意事项详解
2018/09/05 Javascript
移动端如何用下拉刷新的方式实现上拉加载
2018/12/10 Javascript
js布局实现单选按钮控件
2020/01/17 Javascript
js实现右键弹出自定义菜单
2020/09/08 Javascript
vue 插槽简介及使用示例
2020/11/19 Vue.js
在Linux下使用Python的matplotlib绘制数据图的教程
2015/06/11 Python
Django基于客户端下载文件实现方法
2020/04/21 Python
高品质和独特的产品世界:Creations and Collections
2018/01/07 全球购物
无谷物狗粮:Pooch & Mutt
2018/05/23 全球购物
Java编程面试题
2016/04/04 面试题
小学生秋游活动方案
2014/02/23 职场文书
公司总经理岗位职责
2014/03/15 职场文书
保险公司年会主持词
2014/03/22 职场文书
销售人员求职信
2014/07/22 职场文书
三分钟自我介绍演讲稿
2014/08/21 职场文书
个人授权委托书格式
2014/08/30 职场文书
工作失职造成投诉的检讨书范文
2014/10/05 职场文书
2015暑假假期总结
2015/07/13 职场文书
详解Python为什么不用设计模式
2021/06/24 Python
漫画「狩龙人拉格纳」公开TV动画预告图
2022/03/22 日漫
JS前端轻量fabric.js系列物体基类
2022/08/05 Javascript