排查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 08 MySQL
MySQL sql_mode修改不生效的原因及解决
May 07 MySQL
MySql学习笔记之事务隔离级别详解
May 12 MySQL
为什么代码规范要求SQL语句不要过多的join
Jun 23 MySQL
实战 快速定位MySQL的慢SQL
Mar 22 MySQL
MySQL创建管理子分区
Apr 13 MySQL
pt-archiver 主键自增
Apr 26 MySQL
解决Mysql中的innoDB幻读问题
Apr 29 MySQL
MySQL数据库 任意ip连接方法
May 20 MySQL
MySQL外键约束(Foreign Key)案例详解
Jun 28 MySQL
数据设计之权限的实现
Aug 05 MySQL
Mysql中mvcc各场景理解应用
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
使用VisualStudio开发php的图文设置方法
2010/08/21 PHP
解析php框架codeigniter中如何使用框架的session
2013/06/24 PHP
php查询ip所在地的方法
2014/12/05 PHP
MacOS 安装 PHP的图片裁剪扩展Tclip
2015/03/25 PHP
php字符串函数学习之strstr()
2015/03/27 PHP
php实现将HTML页面转换成word并且保存的方法
2016/10/14 PHP
详解Yii2.0使用AR联表查询实例
2017/06/16 PHP
windows下的WAMP环境搭建图文教程(推荐)
2017/07/27 PHP
jQuery UI AutoComplete 使用说明
2011/06/20 Javascript
JavaScript中的noscript元素属性位置及作用介绍
2013/04/11 Javascript
随窗体滑动的小插件sticky源码
2013/06/21 Javascript
用jquery统计子菜单的条数示例代码
2013/10/18 Javascript
jquery 设置元素相对于另一个元素的top值(实例代码)
2013/11/06 Javascript
基于jQuery和CSS3制作响应式水平时间轴附源码下载
2015/12/20 Javascript
Bootstrap与KnockoutJs相结合实现分页效果实例详解
2016/05/03 Javascript
BootStrapValidator初使用教程详解
2017/02/10 Javascript
Angular利用trackBy提升性能的方法
2018/01/26 Javascript
JavaScript实现一个带AI的井字棋游戏源码
2018/05/21 Javascript
JavaScript实现京东购物放大镜和选项卡效果的方法分析
2018/07/05 Javascript
seajs和requirejs模块化简单案例分析
2019/08/26 Javascript
vue 实现超长文本截取,悬浮框提示
2020/07/29 Javascript
小程序实现可拖动的悬浮按钮
2020/09/07 Javascript
[01:32]TI珍贵瞬间系列(一)
2020/08/26 DOTA
使用Python实现下载网易云音乐的高清MV
2015/03/16 Python
Python如何为图片添加水印
2016/11/25 Python
python pandas.DataFrame选取、修改数据最好用.loc,.iloc,.ix实现
2018/06/11 Python
css3.0 图形构成实例练习二
2013/03/19 HTML / CSS
Expedia西班牙:预订酒店、机票、旅行和廉价度假套餐
2019/04/10 全球购物
DTD的含义以及作用
2014/01/26 面试题
什么是servlet
2012/05/08 面试题
工程师求职简历的自我评价分享
2013/10/10 职场文书
会计电算一体化个人简历的自我评价
2013/10/15 职场文书
物业保安员岗位职责制度
2014/01/30 职场文书
中国在我心中演讲稿
2014/09/13 职场文书
2014年党的群众路线学习心得体会
2014/11/05 职场文书
离婚被告答辩状
2015/05/22 职场文书