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 相关文章推荐
linux下导入、导出mysql数据库命令的实现方法
May 26 MySQL
mysql 索引合并的使用
Aug 30 MySQL
MyBatis 动态SQL全面详解
Oct 05 MySQL
MySQL 服务和数据库管理
Nov 11 MySQL
MYSQL 运算符总结
Nov 11 MySQL
mysql timestamp比较查询遇到的坑及解决
Nov 27 MySQL
MySQL多表查询机制
Mar 17 MySQL
CentOS MySql8 远程连接实战
Apr 19 MySQL
Mysql 文件配置解析介绍
May 06 MySQL
sql查询语句之平均分、最高最低分及排序语句
May 30 MySQL
MySQL 语句执行顺序举例解析
Jun 05 MySQL
MySQL控制流函数(-if ,elseif,else,case...when)
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中$this->含义分析
2009/11/29 PHP
php 一元分词算法
2009/11/30 PHP
解析CI即CodeIgniter框架在Nginx下的重写规则
2013/06/03 PHP
php中PDO方式实现数据库的增删改查
2015/05/17 PHP
Laravel框架路由和控制器的绑定操作方法
2018/06/12 PHP
thinkPHP3.2使用RBAC实现权限管理的实现
2019/08/27 PHP
js猜数字小游戏的简单实现代码
2013/07/02 Javascript
web css实现整站样式互相切换
2013/10/29 Javascript
jQuery实现点击后标记当前菜单位置(背景高亮菜单)效果
2015/08/22 Javascript
AngularJS 单元测试(一)详解
2016/09/21 Javascript
实例解析Vue.js下载方式及基本概念
2018/05/11 Javascript
Vue利用History记录上一页面的数据方法实例
2018/11/02 Javascript
vue中组件通信的八种方式(值得收藏!)
2019/08/09 Javascript
世界上最短的数字判断js代码
2019/09/09 Javascript
layui table 复选框跳页后再回来保持原来选中的状态示例
2019/10/26 Javascript
vue中在vuex的actions中请求数据实例
2019/11/08 Javascript
vuex中store存储store.commit和store.dispatch的用法
2020/07/24 Javascript
python 控制语句
2011/11/03 Python
python中对list去重的多种方法
2014/09/18 Python
Python的迭代器和生成器使用实例
2015/01/14 Python
python 实时遍历日志文件
2016/04/12 Python
Python中规范定义命名空间的一些建议
2016/06/04 Python
Python使用type关键字创建类步骤详解
2019/07/23 Python
Python实现变声器功能(萝莉音御姐音)
2019/12/05 Python
pyecharts动态轨迹图的实现示例
2020/04/17 Python
tensorflow使用freeze_graph.py将ckpt转为pb文件的方法
2020/04/22 Python
捷克原创男装和女装购物网站:Bolf.cz
2018/04/28 全球购物
莫斯科制造商的廉价皮大衣:Fursk
2020/06/09 全球购物
教师实习期自我鉴定
2013/10/06 职场文书
会计学财务管理专业个人的自我评价
2013/10/19 职场文书
国贸专业大学生职业生涯规划范文
2014/01/10 职场文书
药店促销活动总结
2014/07/10 职场文书
2015年宣传部部长竞选演讲稿
2014/11/28 职场文书
这样写python注释让代码更加的优雅
2021/06/02 Python
Python数据结构之队列详解
2022/03/21 Python
mysql insert 存在即不插入语法说明
2022/03/25 MySQL