七个字总结mysql索引失效 (mysql索引失效的原因及解决办法)

背景: city 没有索引 province 有索引

跟我学编程13:mysql索引失效or的场景

在 WHERE 子句中,如果在 OR 前的条件列是索引列,而在 OR 后的条件列不是索引列,那么索引会失效。如下:

跟我学编程13:mysql索引失效or的场景

因为 OR 的含义就是两个只要满足一个即可,因此只有一个条件列是索引列是没有意义的,只要有条件列不是索引列,就会进行全表扫描。

如果 加了索引 city

会变成

type=index merge,

index merge 的意思就是对 province和 city 分别进行了扫描,然后将这两个结果集进行了合并,这样做的好处就是 避免了全表扫描