- 使用!=或者not查询的时候,由于索引数据的检索效率非常低,索引会失效
- 使用like通配符放在匹配字段前面的时候,不符合索引的最左匹配规则,索引会失效。放在右边可以。(并不是所有like查询都会失效,只有在查询时字段最左侧加%和左右侧都加%才会导致索引失效)
- 使用or连接查询的时候,如果or连接的是同一个字段(比如 name=“张三” or name=“李四”),那么索引不会失效。如果连接的不是同一个字段(比如name="张三"or age=“20”),索引会失效。
- 类型不一致,如果字段类型是字符串,where 时一定用引号括起来,否则会因为隐式类型转换,索引失效
- 运算符号导致的失效,如果在sql语句中对列(字段)进行了(+、-、*、/、!),那么都将不会走索引
- 联合索引,查询时的条件列不是联合索引中的第一个列,索引失效。(如果查询的字段在组合索引中不是最左侧的字段,那么该组合索引是不会生效的。即左前缀原则)
- 在索引列上使用 mysql 的内置函数,索引失效。
- 索引列使用is null 或者 is not null不一定失效
- 索引列使用>或者<不一定失效
索引失效的几种情况
最新推荐文章于 2024-07-02 10:00:00 发布