Mysql如何查看是否使用到索引

 更新时间:2022年12月22日 10:44:38   作者:漫天雪_昆仑巅  
这篇文章主要介绍了Mysql如何查看是否使用到索引问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

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%';

  • Handler_read_first:索引中第一条被读的次数。如果较高,表示服务器正执行大量全索引扫描(这个值越低越好)。
  • Handler_read_key:如果索引正在工作,这个值代表一个行被索引值读的次数,如果值越低,表示索引得到的性能改善不高,因为索引不经常使用(这个值越高越好)。
  • Handler_read_next :按照键顺序读下一行的请求数。如果你用范围约束或如果执行索引扫描来查询索引列,该值增加。
  • Handler_read_prev:按照键顺序读前一行的请求数。该读方法主要用于优化ORDER BY ... DESC。
  • Handler_read_rnd :根据固定位置读一行的请求数。如果你正执行大量查询并需要对结果进行排序该值较高。你可能使用了大量需要MySQL扫描整个表的查询或你的连接没有正确使用键。这个值较高,意味着运行效率低,应该建立索引来补救。
  • Handler_read_rnd_next:在数据文件中读下一行的请求数。如果你正进行大量的表扫描,该值较高。通常说明你的表索引不正确或写入的查询没有利用索引。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • linux mysql忘记密码的多种解决或Access denied for user ''root''@''localhost''

    linux mysql忘记密码的多种解决或Access denied for user ''root''@''local

    linux mysql忘记密码的多种解决方法。
    2009-07-07
  • MYSQL锁表问题的解决方法

    MYSQL锁表问题的解决方法

    这篇文章主要介绍了MYSQL锁表问题的解决方法,结合实例形式分析了MySQL锁表问题的常见情况与相应解决方法,需要的朋友可以参考下
    2016-03-03
  • MySQL表中添加数据的方法

    MySQL表中添加数据的方法

    这篇文章主要介绍了MySQL表中添加数据的方法,本文通过sql语句给大家详细讲解,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-11-11
  • mysql5.7使用binlog 恢复数据的方法

    mysql5.7使用binlog 恢复数据的方法

    MySQL的binlog日志是MySQL日志中非常重要的一种日志,记录了数据库所有的DML操作,那么怎样通过binlog 恢复数据,本文就详细的来介绍一下
    2021-06-06
  • Mysql闪退问题图文解决办法

    Mysql闪退问题图文解决办法

    之前在使用MySQL 5.5 Command Line Client时,无论输入什么密码,都出现闪退的情况,纠结了半天才找到原因,下面小编给大家分享我的解决方法,感兴趣的朋友一起看看吧
    2016-11-11
  • MySQL验证用户权限的方法

    MySQL验证用户权限的方法

    这篇文章主要介绍了MySQL验证用户权限的方法,需要的朋友可以参考下
    2015-11-11
  • MySQL使用MyFlash快速恢复误删除和修改的数据

    MySQL使用MyFlash快速恢复误删除和修改的数据

    MyFlash 是由美团点评公司技术工程部开发并维护的一个开源工具,主要用于MySQL数据库的DML操作的回滚,MyFlash的优势在于它提供了更多的过滤选项,使得回滚操作变得更加容易,本文将实验通过 MyFlash 工具快速恢复误删除 或 误修改的数据,需要的朋友可以参考下
    2024-06-06
  • MySQL中存储的数据查询的时候如何区分大小写

    MySQL中存储的数据查询的时候如何区分大小写

    这篇文章主要介绍了MySQL中存储的数据查询的时候如何区分大小写问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-04-04
  • MySQL联结表介绍以及使用详解

    MySQL联结表介绍以及使用详解

    这篇文章主要给大家介绍了关于MySQL联结表介绍及使用的相关资料,联结SQL最强大的功能之一就是能在数据检索查询的执行中联结表,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2024-03-03
  • sql注入数据库原理详情介绍

    sql注入数据库原理详情介绍

    这篇文章主要介绍了sql注入数据库原理详情介绍,文章围绕主题展开详细的内容戒杀,具有一定的参考价值,需要的小伙伴可以参考一下,希望对你的学习有所帮助
    2022-09-09

最新评论