排查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 COUNT函数的使用与优化
May 10 MySQL
详解MySQL数据库千万级数据查询和存储
May 18 MySQL
详解MySQL中的主键与事务
May 27 MySQL
SQL注入的实现以及防范示例详解
Jun 02 MySQL
Mysql数据库值的添加、修改、删除及清空操作实例
Jun 20 MySQL
mysql如何配置白名单访问
Jun 30 MySQL
MySQL窗口函数的具体使用
Nov 17 MySQL
MySQL数据库索引的最左匹配原则
Nov 20 MySQL
浅谈如何保证Mysql主从一致
Mar 13 MySQL
MySQL中一条update语句是如何执行的
Mar 16 MySQL
为什么MySQL不建议使用SELECT *
Apr 03 MySQL
SQL中去除重复数据的几种方法汇总(窗口函数对数据去重)
May 08 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 中的一些经验积累
2006/10/09 PHP
从PHP $_SERVER相关参数判断是否支持Rewrite模块
2013/09/26 PHP
PHP数据库链接类(PDO+Access)实例分享
2013/12/05 PHP
WordPress开发中用于获取近期文章的PHP函数使用解析
2016/01/05 PHP
利用php_imagick实现复古效果的方法
2016/10/18 PHP
PHP中CheckBox多选框上传失败的代码写法
2017/02/13 PHP
JavaScript 对象成员的可见性说明
2009/10/16 Javascript
jQuery在IE下使用未闭合的xml代码创建元素时的Bug介绍
2012/01/10 Javascript
javascript面向对象包装类Class封装类库剖析
2013/01/24 Javascript
打开新窗口关闭当前页面不弹出关闭提示js代码
2013/03/18 Javascript
readonly和disabled属性的区别
2015/07/26 Javascript
javascript判断网页是关闭还是刷新
2015/09/12 Javascript
基于canvas实现的钟摆效果完整实例
2016/01/26 Javascript
JS实现JSON.stringify的实例代码讲解
2017/02/07 Javascript
浅谈AngularJS中使用$resource(已更新)
2017/09/14 Javascript
jquery引入外部CDN 加载失败则引入本地jq库
2018/05/23 jQuery
小程序实现授权登陆的解决方案
2018/12/02 Javascript
[02:46]2014DOTA2国际邀请赛 选手为你解读比赛MVP充满梦想
2014/07/09 DOTA
[01:00:52]2018DOTA2亚洲邀请赛 4.4 淘汰赛 EG vs LGD 第一场
2018/04/05 DOTA
[01:17:55]VGJ.T vs Mineski 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/20 DOTA
Python实现把数字转换成中文
2015/06/29 Python
Tensorflow之构建自己的图片数据集TFrecords的方法
2018/02/07 Python
Python利用正则表达式实现计算器算法思路解析
2018/04/25 Python
Python2与Python3的区别实例分析
2019/04/11 Python
详解用python -m http.server搭一个简易的本地局域网
2020/09/24 Python
HTML5地理定位与第三方工具百度地图的应用
2016/11/17 HTML / CSS
HTML5 本地存储之如果没有数据库究竟会怎样
2013/04/25 HTML / CSS
Nike爱尔兰官方网站:Nike.com (IE)
2018/03/12 全球购物
普通大学毕业生自荐信
2013/11/04 职场文书
财务人员求职自荐书范文
2014/02/10 职场文书
大学自我评价
2014/02/12 职场文书
学雷锋志愿服务月活动总结
2014/03/09 职场文书
企业安全生产责任书
2014/04/14 职场文书
公安局负责人查摆问题及整改方案
2014/09/27 职场文书
2015年学生会主席工作总结
2015/04/21 职场文书
2016八一建军节慰问信
2015/11/30 职场文书