排查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 8.0 之不可见列的基本操作
May 20 MySQL
Mysql基础知识点汇总
May 26 MySQL
MySql开发之自动同步表结构
May 28 MySQL
mysql 带多个条件的查询方式
Jun 05 MySQL
详解MySQL中的pid与socket
Jun 15 MySQL
低版本Druid连接池+MySQL驱动8.0导致线程阻塞、性能受限
Jul 01 MySQL
MySQL Shell import_table数据导入的实现
Aug 07 MySQL
MySQL分区表实现按月份归类
Nov 01 MySQL
实战 快速定位MySQL的慢SQL
Mar 22 MySQL
MySql分区类型及创建分区的方法
Apr 13 MySQL
mysql如何查询连续记录
May 11 MySQL
面试官问我Mysql的存储引擎了解多少
Aug 05 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/01/18 PHP
php 短链接算法收集与分析
2011/12/30 PHP
如何解决CI框架的Disallowed Key Characters错误提示
2013/07/05 PHP
php提取字符串中网站url地址的方法
2014/12/03 PHP
PHP的Yii框架使用中的一些错误解决方法与建议
2015/08/21 PHP
判断客户端浏览器是否安装了Flash插件的多种方法
2010/08/11 Javascript
Js 正则表达式知识汇总
2014/12/02 Javascript
js如何实现点击标签文字,文字在文本框出现
2015/08/05 Javascript
JS实现跟随鼠标的链接文字提示框效果
2015/08/06 Javascript
js中不同的height, top的区别对比
2015/09/24 Javascript
jQuery序列化表单成对象的简单实现
2016/11/29 Javascript
HTML5+Canvas调用手机拍照功能实现图片上传(下)
2017/04/21 Javascript
jQuery常用选择器详解
2017/07/17 jQuery
Node.js 利用cheerio制作简单的网页爬虫示例
2018/03/01 Javascript
详解Vue的常用指令v-if, v-for, v-show,v-else, v-bind, v-on
2018/10/12 Javascript
js根据需要计算数组中重复出现某个元素的个数
2019/01/18 Javascript
基于jQuery实现可编辑的表格
2019/12/11 jQuery
详解vue-flickity的fullScreen功能实现
2020/04/07 Javascript
Python实现购物程序思路及代码
2017/07/24 Python
详解Django+Uwsgi+Nginx的生产环境部署
2018/06/25 Python
PyTorch搭建一维线性回归模型(二)
2019/05/22 Python
Python 、Pycharm、Anaconda三者的区别与联系、安装过程及注意事项
2019/10/11 Python
python中如何进行连乘计算
2020/05/28 Python
浅谈Keras中shuffle和validation_split的顺序
2020/06/19 Python
Python 如何反方向迭代一个序列
2020/07/28 Python
在python中对于bool布尔值的取反操作
2020/12/11 Python
澳大利亚冲浪和时尚服装网上购物:SurfStitch
2017/07/29 全球购物
毕业生求职自荐信怎么写
2014/01/08 职场文书
七年级生物教学反思
2014/01/30 职场文书
女子职高个人自荐书
2014/02/01 职场文书
教育英语专业毕业生的求职信
2014/03/13 职场文书
学习计划书怎么写
2014/09/15 职场文书
安全保证书格式
2015/02/28 职场文书
奖学金个人总结
2015/03/04 职场文书
关于拾金不昧的感谢信(五篇)
2019/10/18 职场文书
Python基础之条件语句详解
2021/06/16 Python