排查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之DML语言
Apr 05 MySQL
MySQL之高可用集群部署及故障切换实现
Apr 22 MySQL
MySQL中你可能忽略的COLLATION实例详解
May 12 MySQL
MySQL如何构建数据表索引
May 13 MySQL
MySQL触发器的使用
May 24 MySQL
MySQL库表名大小写的选择
Jun 05 MySQL
MySQL单表千万级数据处理的思路分享
Jun 05 MySQL
解决mysql模糊查询索引失效问题的几种方法
Jun 18 MySQL
分析mysql中一条SQL查询语句是如何执行的
Jun 21 MySQL
MySQL中utf8mb4排序规则示例
Aug 02 MySQL
mysql数据插入覆盖和时间戳的问题及解决
Mar 25 MySQL
MySQL创建管理KEY分区
Apr 13 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
一个捕获函数输出的函数
2007/02/14 PHP
PHP中的正则表达式函数介绍
2012/02/27 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(四)
2014/06/23 PHP
Yii2创建控制器(createController)方法详解
2016/07/23 PHP
laravel Validator ajax返回错误信息的方法
2019/09/29 PHP
Javascript里使用Dom操作Xml
2007/01/22 Javascript
学习ExtJS border布局
2009/10/08 Javascript
11个用于提高排版水平的基于jquery的文字效果插件
2012/09/14 Javascript
利用Javascript判断操作系统的类型实现不同操作系统下的兼容性
2013/01/29 Javascript
jQuery实现级联菜单效果(仿淘宝首页菜单动画)
2014/04/10 Javascript
JQuery判断radio(单选框)是否选中和获取选中值方法总结
2015/04/15 Javascript
jQuery siblings()用法实例详解
2016/04/26 Javascript
jquery easyui datagrid实现增加,修改,删除方法总结
2016/05/25 Javascript
JavaScript对象数组排序实例方法浅析
2016/06/15 Javascript
EasyUI中在表单提交之前进行验证
2016/07/19 Javascript
微信小程序入门教程
2016/11/18 Javascript
JS简单判断函数是否存在的方法
2017/02/13 Javascript
AngularJS表格样式简单设置方法示例
2017/03/03 Javascript
详解处理Vue单页面应用SEO的另一种思路
2018/11/09 Javascript
解决vue.js提交数组时出现数组下标的问题
2019/11/05 Javascript
jquery实现鼠标悬浮弹出气泡提示框
2020/12/23 jQuery
Python中用Ctrl+C终止多线程程序的问题解决
2013/03/30 Python
基于Python数据可视化利器Matplotlib,绘图入门篇,Pyplot详解
2017/10/13 Python
python爬虫之BeautifulSoup 使用select方法详解
2017/10/23 Python
python数字图像处理之高级滤波代码详解
2017/11/23 Python
python socket网络编程之粘包问题详解
2018/04/28 Python
Python 微信爬虫完整实例【单线程与多线程】
2019/07/06 Python
python爬虫中抓取指数的实例讲解
2020/12/01 Python
英国DVD和蓝光碟片购买网站:Zoom.co.uk(电影和电视)
2019/09/23 全球购物
成功的餐厅经营创业计划书
2014/01/15 职场文书
贷款委托书怎么写
2014/08/02 职场文书
村级四风对照检查材料
2014/08/24 职场文书
2014年后勤工作总结
2014/11/18 职场文书
工作证明格式范文
2015/06/15 职场文书
2016教师政治学习心得体会
2016/01/23 职场文书
关于社会实践的心得体会(2016最新版)
2016/01/25 职场文书