背景: city 没有索引 province 有索引
在 WHERE 子句中,如果在 OR 前的条件列是索引列,而在 OR 后的条件列不是索引列,那么索引会失效。如下:
因为 OR 的含义就是两个只要满足一个即可,因此只有一个条件列是索引列是没有意义的,只要有条件列不是索引列,就会进行全表扫描。
如果 加了索引 city
会变成
type=index merge,
index merge 的意思就是对 province和 city分别进行了扫描,然后将这两个结果集进行了合并,这样做的好处就是避免了全表扫描。