排查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 相关文章推荐
浅析InnoDB索引结构
Apr 05 MySQL
MySQL索引篇之千万级数据实战测试
Apr 05 MySQL
mysql多表查询-笔记七
Apr 05 MySQL
MySQL系列之十五 MySQL常用配置和性能压力测试
Jul 02 MySQL
mysq启动失败问题及场景分析
Jul 15 MySQL
MYSQL 的10大经典优化案例场景实战
Sep 14 MySQL
MySQL中几种插入和批量语句实例详解
Sep 14 MySQL
浅谈mysql哪些情况会导致索引失效
Nov 20 MySQL
进阶篇之linux环境下安装MySQL数据库
Apr 09 MySQL
MySQL脏读,幻读和不可重复读
May 11 MySQL
MySQL普通表如何转换成分区表
May 30 MySQL
mysql实现将字符串字段转为数字排序或比大小
Jun 14 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上传文件时文件过大$_FILES为空的解决方法
2013/11/26 PHP
php权重计算方法代码分享
2014/01/09 PHP
stripos函数知识点实例分享
2019/02/11 PHP
jQuery版Tab标签切换
2011/03/16 Javascript
javascript 进阶篇3 Ajax 、JSON、 Prototype介绍
2012/03/14 Javascript
根据当前时间在jsp页面上显示上午或下午
2014/08/18 Javascript
JavaScript立即执行函数的三种不同写法
2014/09/05 Javascript
基于jQuery实现网页进度显示插件
2015/03/04 Javascript
提升jQuery的性能需要做好七件事
2016/01/11 Javascript
微信小程序 教程之条件渲染
2016/10/18 Javascript
原生JS实现垂直手风琴效果
2017/02/19 Javascript
基于vuejs实现一个todolist项目
2017/04/11 Javascript
JQuery 封装 Ajax 常用方法(推荐)
2017/05/21 jQuery
ECMAScript6变量的解构赋值实例详解
2017/09/19 Javascript
解决Vue.js 2.0 有时双向绑定img src属性失败的问题
2018/03/14 Javascript
从零开始学习搭建React脚手架项目
2018/08/23 Javascript
如何使用 vue + d3 画一棵树
2018/12/03 Javascript
vue 全局封装loading加载教程(全局监听)
2020/11/05 Javascript
[08:44]DOTA2发布会群星聚首 我们都是刀塔人
2014/03/21 DOTA
python编写简单爬虫资料汇总
2016/03/22 Python
Swift 3.0在集合类数据结构上的一些新变化总结
2016/07/11 Python
Python实用技巧之列表、字典、集合中根据条件筛选数据详解
2018/07/11 Python
使用python list 查找所有匹配元素的位置实例
2019/06/11 Python
python中列表的切片与修改知识点总结
2019/07/23 Python
Python字符串中删除特定字符的方法
2020/01/15 Python
Python Django中的STATIC_URL 设置和使用方式
2020/03/27 Python
keras 实现轻量级网络ShuffleNet教程
2020/06/19 Python
AmazeUI导航的示例代码
2020/08/14 HTML / CSS
阿里巴巴国际站:Alibaba.com
2016/07/21 全球购物
印度尼西亚在线时尚购物网站:ZALORA印尼
2016/08/02 全球购物
最新会计专业求职信范文
2014/01/28 职场文书
工程部岗位职责
2015/02/10 职场文书
员工年度工作总结2015
2015/05/18 职场文书
男方家长婚礼答谢词
2015/09/29 职场文书
小学班级标语口号大全
2015/12/26 职场文书
dubbo服务整合zipkin详解
2021/07/26 Java/Android