排查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命令行操作时的编码问题详解
Apr 14 MySQL
mysql脏页是什么
Jul 26 MySQL
SQL之各种join小结详细讲解
Aug 04 MySQL
MySQL实例精讲单行函数以及字符数学日期流程控制
Oct 15 MySQL
浅谈MySql整型索引和字符串索引失效或隐式转换问题
Nov 20 MySQL
Mysql中有关Datetime和Timestamp的使用总结
Dec 06 MySQL
mysql自增长id用完了该怎么办
Feb 12 MySQL
mysql 生成连续日期及变量赋值
Mar 20 MySQL
简单聊一聊SQL注入及防止SQL注入
Mar 23 MySQL
排查MySQL生产环境索引没有效果
Apr 11 MySQL
讲解MySQL增删改操作
May 06 MySQL
MySQL的表级锁,行级锁,排它锁和共享锁
Jul 15 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
Windows下PHP5和Apache的安装与配置
2006/09/05 PHP
YII2框架中excel表格导出的方法详解
2017/07/21 PHP
php+js实现点赞功能的示例详解
2020/08/07 PHP
基于jquery的修改当前TAB显示标题的代码
2010/12/11 Javascript
javascript插入样式实现代码
2012/02/22 Javascript
JavaScript高级程序设计 读书笔记之十 本地对象Date日期
2012/02/27 Javascript
jQuery.validate 常用方法及需要注意的问题
2013/03/20 Javascript
JavaScript编程中布尔对象的基本使用
2015/10/25 Javascript
谈谈jQuery之Deferred源码剖析
2016/12/19 Javascript
Node.js中环境变量process.env的一些事详解
2017/10/26 Javascript
实现div内部滚动条滚动到底部和顶部的代码
2017/11/15 Javascript
原生JS实现列表内容自动向上滚动效果
2019/05/22 Javascript
微信小程序 授权登录详解(附完整源码)
2019/08/23 Javascript
vue 框架下自定义滚动条(easyscroll)实现方法
2019/08/29 Javascript
vue-devtools的安装和使用步骤详解
2019/10/17 Javascript
vue 实现 rem 布局或vw 布局的方法
2019/11/13 Javascript
python获取图片颜色信息的方法
2015/03/18 Python
Python 40行代码实现人脸识别功能
2017/04/02 Python
python数据抓取分析的示例代码(python + mongodb)
2017/12/25 Python
Python统计纯文本文件中英文单词出现个数的方法总结【测试可用】
2018/07/25 Python
Python类中的魔法方法之 __slots__原理解析
2019/08/26 Python
Python3 A*寻路算法实现方式
2019/12/24 Python
python编写一个会算账的脚本的示例代码
2020/06/02 Python
协程Python 中实现多任务耗资源最小的方式
2020/10/19 Python
Perry Ellis官网:美国男士品味服装
2016/12/09 全球购物
Superdry瑞典官网:英国日本街头风品牌
2017/05/17 全球购物
施工安全协议书
2013/12/11 职场文书
餐饮业员工工作决心书
2014/03/11 职场文书
职务聘任书范文
2014/03/29 职场文书
乡镇党的群众路线教育实践活动个人对照检查材料
2014/09/23 职场文书
领导干部“四风”查摆问题个人整改措施
2014/10/28 职场文书
汽车4S店前台接待岗位职责
2015/04/03 职场文书
民事起诉书范本
2015/05/19 职场文书
共青团优秀团员申请书(范文)
2019/08/15 职场文书
HTML+CSS+JS实现图片的瀑布流布局的示例代码
2021/04/22 HTML / CSS
详解Oracle数据库中自带的所有表结构(sql代码)
2021/11/20 Oracle