排查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中distinct和count(*)的使用方法比较
May 26 MySQL
MySQL 使用索引扫描进行排序
Jun 20 MySQL
SQL实现LeetCode(178.分数排行)
Aug 04 MySQL
SQL 聚合、分组和排序
Nov 11 MySQL
MySQL Innodb索引机制详细介绍
Nov 23 MySQL
如何创建一个创建MySQL数据库中的datetime类型
Mar 21 MySQL
实战 快速定位MySQL的慢SQL
Mar 22 MySQL
排查并解决MySQL生产库内存使用率高的报警
Apr 11 MySQL
SQL语句多表联合查询的方法示例
Apr 18 MySQL
提高系统的吞吐量解决数据库重复写入问题
Apr 23 MySQL
讲解MySQL增删改操作
May 06 MySQL
MySQL分布式恢复进阶
Jul 23 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 和 HTML
2006/10/09 PHP
jquery+php实现导出datatables插件数据到excel的方法
2015/07/06 PHP
curl 出现错误的调试方法(必看)
2017/02/13 PHP
深入研究PHP中的preg_replace和代码执行
2018/08/15 PHP
基于PHP实现堆排序原理及实例详解
2020/06/19 PHP
基于PHP实现短信验证码发送次数限制
2020/07/11 PHP
不用MOUSEMOVE也能滑动啊
2007/05/23 Javascript
JavaScript 反科里化 this [译]
2012/09/20 Javascript
使用GruntJS构建Web程序之构建篇
2014/06/04 Javascript
JavaScript随机生成信用卡卡号的方法
2015/04/07 Javascript
jquery实现鼠标悬浮停止轮播特效
2020/08/20 Javascript
javascript url几种编码方式详解
2016/06/06 Javascript
js中数组的常用方法小结
2016/12/30 Javascript
浅谈js中用$(#ID)来作为选择器的问题(id重复的时候)
2017/02/14 Javascript
JavaScript中的高级函数
2018/01/04 Javascript
详解Angular5 路由传参的3种方法
2018/04/28 Javascript
vuex直接赋值的三种方法总结
2018/09/16 Javascript
Python线程指南详细介绍
2017/01/05 Python
Python与人工神经网络:使用神经网络识别手写图像介绍
2017/12/19 Python
python 筛选数据集中列中value长度大于20的数据集方法
2018/06/14 Python
对python指数、幂数拟合curve_fit详解
2018/12/29 Python
利用python脚本如何简化jar操作命令
2019/02/24 Python
Python实现的排列组合、破解密码算法示例
2019/04/12 Python
pycharm访问mysql数据库的方法步骤
2019/06/18 Python
用python建立两个Y轴的XY曲线图方法
2019/07/08 Python
Python解析json时提示“string indices must be integers”问题解决方法
2019/07/31 Python
python matplotlib库直方图绘制详解
2019/08/10 Python
Python 通过截图匹配原图中的位置(opencv)实例
2019/08/27 Python
pycharm快捷键汇总
2020/02/14 Python
详解pandas apply 并行处理的几种方法
2021/02/24 Python
大韩航空官方网站:Korean Air
2017/10/25 全球购物
珍珠鸟教学反思
2014/02/01 职场文书
教师个人自我评价范文
2014/04/13 职场文书
建国大业观后感
2015/06/01 职场文书
私人贷款担保书该怎么写呢?
2019/07/02 职场文书
创业计划书之家政服务
2019/09/18 职场文书