Mysql

关注公众号 jb51net

关闭
首页 > 数据库 > Mysql > MySQL索引失效

MySQL索引失效的原因及问题排查

作者:山脚ice

MySQL索引失效是指在查询数据时,MySQL数据库无法有效地使用索引来提高查询性能,导致查询速度变慢或者索引无效的情况,本文给大家介绍了MySQL中什么情况下会出现索引失效?以及如何排查索引失效?,需要的朋友可以参考下

1-引言:什么是MySQL的索引失效?(What、Why)

1-1 索引失效定义

1-2 为什么排查索引失效

排查索引失效的原因是至关重要的,主要有以下方面:

2- 索引失效的原因及排查(How)

2-1 索引失效的情况

CREATE TABLE `student_info` (
  `student_id` int(11) NOT NULL AUTO_INCREMENT,
  `student_name` varchar(50) NOT NULL,
  `student_age` int(11) DEFAULT NULL,
  `enrollment_date` datetime DEFAULT NULL,
  PRIMARY KEY (`student_id`),
  UNIQUE KEY `student_name` (`student_name`),
  KEY `student_age` (`student_age`),
  KEY `enrollment_date` (`enrollment_date`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

image.png

① 索引列参与计算

explain select * from student_info where student_age=21;

image.png

explain select * from student_info where student_age+1 =21;

image.png

image.png

② 对索引列进行函数操作

explain select * from student_info where enrollment_date = '2022-09-04 08:00:00';

image.png

explain select * from student_info where YEAR(enrollment_date) = 2022;

image.png

③ 查询中使用了 OR 两边有范围查询 > 或 <

explain select * from student_info where student_name='Helen' and student_age>15;

image.png

explain select * from student_info where student_name='Helen' or student_age>15;

image.png

explain select * from student_info where student_name='Helen' or student_age=18;

image.png

④ like 操作:以 % 开头的 like 查询

⑤ 不等于比较 !=

⑥ order by

image.png

⑦ 使用 IN

2-2 索引失效的排查

使用 explain 排查

需要关注的字段:type、key、extra

索引失效情况

此时就需要排查索引失效的原因

3- 总结:索引失效知识点小结

MySQL中什么情况下会出现索引失效?如何排查索引失效?
回答
:::info
MySQL中索引失效的情况有

索引失效的排查

此时就需要排查索引失效的原因,是否存在以上情况

以上就是MySQL索引失效的原因及问题排查的详细内容,更多关于MySQL索引失效的资料请关注脚本之家其它相关文章!

您可能感兴趣的文章:
阅读全文