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 pt-slave-restart工具的使用简介
Apr 07 MySQL
详解MySQL InnoDB存储引擎的内存管理
Apr 08 MySQL
mysql 8.0.24版本安装配置方法图文教程
May 12 MySQL
MySQL系列之九 mysql查询缓存及索引
Jul 02 MySQL
Mysql排序的特性详情
Nov 01 MySQL
mysql创建存储过程及函数详解
Dec 04 MySQL
MySQL Server 层四个日志
Mar 31 MySQL
MySQL选择合适的备份策略和备份工具
Jun 01 MySQL
MySQL数据库实验实现简单数据库应用系统设计
Jun 21 MySQL
MySQL实现字段分割一行转多行的示例代码
Jul 07 MySQL
MySQL 原理优化之Group By的优化技巧
Aug 14 MySQL
postgresql如何找到表中重复数据的行并删除
May 08 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中显示格式化的用户输入
2006/10/09 PHP
解决163/sohu/sina不能够收到PHP MAIL函数发出邮件的问题
2009/03/13 PHP
实例讲解PHP设计模式编程中的简单工厂模式
2016/02/29 PHP
php $_SESSION会员登录实例分享
2021/01/19 PHP
[原创]PHP实现生成vcf vcard文件功能类定义与使用方法详解【附demo源码下载】
2017/09/02 PHP
PHP面向对象多态性实现方法简单示例
2017/09/27 PHP
前端开发必须知道的JS之原型和继承
2010/07/06 Javascript
基于Jquery实现的一个图片滚动切换
2012/06/21 Javascript
一个js控制的导航菜单实例代码
2013/12/03 Javascript
javaScript对文字按照拼音排序实现代码
2013/12/27 Javascript
javascript实现的元素拖动函数宿主为浏览器
2014/07/21 Javascript
用户代理字符串userAgent可实现的四个识别
2015/09/20 Javascript
Vuejs中使用markdown服务器端渲染的示例
2017/11/22 Javascript
JS使用贪心算法解决找零问题示例
2017/11/27 Javascript
JS+canvas画一个圆锥实例代码
2017/12/13 Javascript
Angular6 Filter实现页面搜索的示例代码
2018/12/02 Javascript
vue + elementUI实现省市县三级联动的方法示例
2019/10/29 Javascript
通过js实现压缩图片上传功能
2020/02/25 Javascript
javascript实现文字跑马灯效果
2020/06/18 Javascript
python脚本实现分析dns日志并对受访域名排行
2014/09/18 Python
在Python中操作日期和时间之gmtime()方法的使用
2015/05/22 Python
Django实现支付宝付款和微信支付的示例代码
2018/07/25 Python
Python爬虫文件下载图文教程
2018/12/23 Python
Python中时间datetime的处理与转换用法总结
2019/02/18 Python
Win10+GPU版Pytorch1.1安装的安装步骤
2019/09/27 Python
以SQLite和PySqlite为例来学习Python DB API
2020/02/05 Python
Python HTMLTestRunner可视化报告实现过程解析
2020/04/10 Python
Jowissa官方网站:瑞士制造的手表,优雅简约的设计
2020/07/29 全球购物
建筑公司文秘岗位职责
2013/11/29 职场文书
元宵节晚会主持人串词
2014/03/25 职场文书
护士求职自荐信
2015/03/25 职场文书
《女娲补天》读后感5篇
2019/12/31 职场文书
如何用JS实现网页瀑布流布局
2021/04/24 Javascript
PyTorch 实现L2正则化以及Dropout的操作
2021/05/27 Python
Java实现简易的分词器功能
2021/06/15 Java/Android
Feign调用全局异常处理解决方案
2021/06/24 Java/Android