索引失效的条件

1、应尽量避免在 where 子句中使用 != 或 <> 操作符,否则引擎将放弃使用索引而进行全表扫描;

2、尽量避免在 where 子句中使用 or 来连接条件,否则将导致引擎放弃使用索引而进行全表扫描,即使其中有条件带索引也不会使用,这也是为什么尽量少用 or 的原因;

3、对于多列索引,不是使用的第一部分,则不会使用索引;

4、如果列类型是字符串,那一定要在条件中将数据使用引号引用起来,否则不会使用索引;

5、like的模糊查询以 % 开头,索引失效;

6、应尽量避免在 where 子句中对字段进行表达式操作,这将导致引擎放弃使用索引而进行全表扫描;

7、应尽量避免在 where 子句中对字段进行函数操作,这将导致引擎放弃使用索引而进行全表扫描;

8、不要在 where 子句中的 “=” 左边进行函数、算术运算或其他表达式运算,否则系统将可能无法正确使用索引;

9、如果MySQL估计使用全表扫描要比使用索引快,则不使用索引;

10、不适合键值较少的列(重复数据较多的列)。

文章来源:https://blog.csdn.net/xlgen157387/article/details/79572598

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注