排查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 05 MySQL
mysql查询的控制语句图文详解
Apr 11 MySQL
IDEA 链接Mysql数据库并执行查询操作的完整代码
May 20 MySQL
MYSQL 的10大经典优化案例场景实战
Sep 14 MySQL
MySQL连接控制插件介绍
Sep 25 MySQL
浅谈MySQL函数
Oct 05 MySQL
详细聊聊关于Mysql联合查询的那些事儿
Oct 24 MySQL
彻底解决MySQL使用中文乱码的方法
Jan 22 MySQL
MySQL导致索引失效的几种情况
Jun 25 MySQL
MySQL事务的ACID特性以及并发问题方案
Jul 15 MySQL
Mysql中mvcc各场景理解应用
Aug 05 MySQL
MySQL深分页问题解决思路
Dec 24 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求两个文件的相对路径
2013/06/20 PHP
thinkPHP5.0框架引入Traits功能实例分析
2017/03/18 PHP
Web开发者必备的12款超赞jQuery插件
2010/12/03 Javascript
jQuery实现的Email中的收件人效果(按del键删除)
2011/03/20 Javascript
多个表单中如何获得这个文件上传的网址实现js代码
2013/03/25 Javascript
减少访问DOM的次数提升javascript性能
2014/02/24 Javascript
简单实现node.js图片上传
2016/12/18 Javascript
Windows下支持自动更新的Electron应用脚手架的方法
2018/12/24 Javascript
为vue项目自动设置请求状态的配置方法
2019/06/09 Javascript
vue 实现把路由单独分离出来
2020/08/13 Javascript
详解 javascript对象创建模式
2020/10/30 Javascript
Python实现多线程HTTP下载器示例
2017/02/11 Python
Python入门之三角函数sin()函数实例详解
2017/11/08 Python
解决tensorflow模型参数保存和加载的问题
2018/07/26 Python
python判断两个序列的成员是否一样的实例代码
2020/03/01 Python
keras训练曲线,混淆矩阵,CNN层输出可视化实例
2020/06/15 Python
Python中random模块常用方法的使用教程
2020/10/04 Python
python3实现飞机大战
2020/11/29 Python
python实现图片转字符画
2021/02/19 Python
HTML5 embed标签定义和用法详解
2014/05/09 HTML / CSS
美国隐形眼镜网:Major Lens
2018/02/09 全球购物
莫斯科隐形眼镜网上商店:Linzi
2019/07/22 全球购物
巴西购物网站:Submarino
2020/01/19 全球购物
Love, Bonito国际官网:新加坡女装品牌
2021/03/13 全球购物
网络维护管理员的自我评价分享
2013/11/11 职场文书
学习自我鉴定
2014/02/01 职场文书
法学专业自我鉴定
2014/02/05 职场文书
政风行风评议整改方案
2014/09/15 职场文书
2014年新农村建设工作总结
2014/12/01 职场文书
护士个人年终总结
2015/02/13 职场文书
施工员岗位职责范本
2015/04/11 职场文书
学雷锋团日活动总结
2015/05/06 职场文书
用电申请报告范文
2015/05/18 职场文书
借条格式范本
2015/05/25 职场文书
学习心得体会
2019/06/20 职场文书
HTML基础详解(下)
2021/10/16 HTML / CSS