or 不知道哪一个字段会使用所以干脆不使用索引

如果使用了or关键字,那么它前面和后面的字段都要加索引,不然所有的索引都会失效,这是一个大坑。

这个原因就更简单了

在 WHERE 子句中,如果在 OR 前的条件列是索引列,而在 OR 后的条件列不是索引列,那么索引会失效 举个例子,比如下面的查询语句,b 是主键,e 是普通列,从执行计划的结果看,是走了全表扫描。

Untitled

优化

这个的优化方式就是 在 Or 的时候两边都加上索引

就会使用索引 避免全表扫描

Untitled

参考

https://mp.weixin.qq.com/s/QBReuBhmbgSWhcploKp-qQ