排查MySQL生产环境索引没有效果


Posted in MySQL onApril 11, 2022

 早上收到开发同学求助,有个SQL查询耗时特别长,看了执行计划发现没有走索引,但是不知道原因在哪里,我们一起来分析一下。

mysql>explain SELECT
	* 
FROM
	artisan_income 
WHERE
	parent_id IN (
		222645481,
		222583953,
		222181775,
		222180931,
		222081126,
		221678753,
		221616102,
		221591783,
		221219312,
		221195482,
		221118672,
		220763129,
		220654289,
		220633930,
		220323633,
		220227641,
		219825564,
		219720338,
		219321345,
	219291958 
	) \G
*************************** 1. row ***************************
           id: 1
  select_type: SIMPLE
        table: artisan_income
   partitions: 
         type: ALL
possible_keys: idx_parent_id
          key: 
      key_len: 
          ref: 
         rows: 20711352
     filtered: 100
        Extra: Using where

确实是全表扫描,带着疑问我们把生产环境数据同步到测试库,方便测试,然后在测试环境进行查询。

mysql>explain SELECT
	* 
FROM
	artisan_income 
WHERE
	parent_id IN (
		222645481,
		222583953,
		222181775,
		222180931,
		222081126,
		221678753,
		221616102,
		221591783,
		221219312,
		221195482,
		221118672,
		220763129,
		220654289,
		220633930,
		220323633,
		220227641,
		219825564,
		219720338,
		219321345,
	219291958 
	) \G
*************************** 1. row ***************************
           id: 1
  select_type: SIMPLE
        table: artisan_income
   partitions: 
         type: range
possible_keys: idx_parent_id
          key: idx_parent_id
      key_len: 5
          ref: 
         rows: 1870780
     filtered: 100
        Extra: Using index condition

发现在测试环境就用到了parent_id字段的索引,生产库和测试库同样都是5.7的版本,数据也几乎一样,但是执行计划不一样,第一时间想到了统计信息的问题,于是进行analyze table

analyze table artisan_income;

然后查看执行计划:

mysql>explain SELECT
	* 
FROM
	artisan_income 
WHERE
	parent_id IN (
		222645481,
		222583953,
		222181775,
		222180931,
		222081126,
		221678753,
		221616102,
		221591783,
		221219312,
		221195482,
		221118672,
		220763129,
		220654289,
		220633930,
		220323633,
		220227641,
		219825564,
		219720338,
		219321345,
	219291958 
	) \G
*************************** 1. row ***************************
           id: 1
  select_type: SIMPLE
        table: artisan_income
   partitions: 
         type: range
possible_keys: idx_parent_id
          key: idx_parent_id
      key_len: 5
          ref: 
         rows: 1901880
     filtered: 100
        Extra: Using index condition

发现执行计划已经恢复正常。

mysql>SELECT
	* 
FROM
	artisan_income 
WHERE
	parent_id IN (
		222645481,
		222583953,
		222181775,
		222180931,
		222081126,
		221678753,
		221616102,
		221591783,
		221219312,
		221195482,
		221118672,
		220763129,
		220654289,
		220633930,
		220323633,
		220227641,
		219825564,
		219720338,
		219321345,
	219291958 
	) \G
返回行数:[0],耗时:2 ms.

到此这篇关于生产环境MySQL索引时效的排查过程的文章就介绍到这了,更多相关MySQL索引排查内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

MySQL 相关文章推荐
为什么mysql字段要使用NOT NULL
May 13 MySQL
新手必备之MySQL msi版本下载安装图文详细教程
May 21 MySQL
Mysql systemctl start mysqld报错的问题解决
Jun 03 MySQL
MySQL中的布尔值,怎么存储false或true
Jun 04 MySQL
MySql 8.0及对应驱动包匹配的注意点说明
Jun 23 MySQL
mysql如何配置白名单访问
Jun 30 MySQL
MySQL 那些常见的错误设计规范,你都知道吗
Jul 16 MySQL
MYSQL 的10大经典优化案例场景实战
Sep 14 MySQL
MySQL表锁、行锁、排它锁及共享锁的使用详解
Apr 02 MySQL
MySQL的存储过程和相关函数
Apr 26 MySQL
MySQL如何修改字段类型和字段长度
Jun 10 MySQL
MySQL深分页问题解决思路
Dec 24 MySQL
排查并解决MySQL生产库内存使用率高的报警
Apr 11 #MySQL
Windows下载并安装MySQL8.0.x 版本的完整教程
MySQL数据库优化之通过索引解决SQL性能问题
Apr 10 #MySQL
MySQL 外连接语法之 OUTER JOIN
Apr 09 #MySQL
MySQL中优化SQL语句的方法(show status、explain分析服务器状态信息)
Apr 09 #MySQL
进阶篇之linux环境下安装MySQL数据库
MySQL的存储函数与存储过程的区别解析
Apr 08 #MySQL
You might like
一个PHP分页类的代码
2011/05/18 PHP
理解和运用PHP中的多态性[译]
2011/08/02 PHP
Zend Framework框架实现类似Google搜索分页效果
2016/11/25 PHP
PhpStorm+xdebug+postman调试技巧分享
2020/09/15 PHP
基于jQuery的可以控制左右滚动及自动滚动效果的代码
2010/07/25 Javascript
js querySelector和getElementById通过id获取元素的区别
2012/04/20 Javascript
Jquery增加鼠标中间功能mousewheel的实例代码
2013/09/05 Javascript
js实现无限级树形导航列表效果代码
2015/09/23 Javascript
jquery实现全选功能效果的实现代码
2016/05/05 Javascript
Vue 进阶教程之v-model详解
2017/05/06 Javascript
分分钟学会vue中vuex的应用(入门教程)
2017/09/14 Javascript
Vue+Vux项目实践完整代码
2017/11/30 Javascript
通过jQuery学习js类型判断的技巧
2019/05/27 jQuery
vue中 v-for循环的用法详解
2020/02/19 Javascript
[07:59]2014DOTA2叨叨刀塔 林熊猫称被邀请赛现场盛况震撼
2014/07/21 DOTA
Python语言的面相对象编程方式初步学习
2016/03/12 Python
python实现多线程网页下载器
2018/04/15 Python
python和pygame实现简单俄罗斯方块游戏
2021/02/19 Python
Python 3.3实现计算两个日期间隔秒数/天数的方法示例
2019/01/07 Python
Python实现的多进程拷贝文件并显示百分比功能示例
2019/04/09 Python
python实现连连看辅助(图像识别)
2020/03/25 Python
如何基于Python批量下载音乐
2019/11/11 Python
详解用Python调用百度地图正/逆地理编码API
2020/07/02 Python
Python如何截图保存的三种方法(小结)
2020/09/01 Python
HTML5实现WebSocket协议原理浅析
2014/07/07 HTML / CSS
德国净水壶和滤芯品牌:波尔德PearlCo(家用净水器)
2020/04/29 全球购物
厂长助理岗位职责
2013/12/27 职场文书
网络信息管理员岗位职责
2014/01/05 职场文书
2014三八妇女节活动总结范文四篇
2014/03/09 职场文书
小学运动会口号
2014/06/07 职场文书
学生违反校规检讨书
2014/10/28 职场文书
2014年保险业务员工作总结
2014/12/23 职场文书
学历证明范文
2015/06/16 职场文书
社会心理学学习心得体会
2016/01/22 职场文书
国庆节到了,利用JS实现一个生成国庆风头像的小工具 详解实现过程
2021/10/05 Javascript
 python中的元类metaclass详情
2022/05/30 Python