1. 连表查询或采用临时表会走索引
2. 如果 in 的选择性较少,可采用union
select a, b , c, d from T where b in ( x1, x2,x3) ;
select a, b , c, d from T where b =‘x1' union
select a, b , c, d from T where b =‘x2' union
select a, b , c, d from T where b =‘x3';
- 在b列的选择性较小时,走不走索引对性能是影响不大的
参考:mysql in 不走索引的思考(有点疑问,mysql in 就是不走索引,还是选择性小的时候就不走) - 另:mysql in 和or 所在列如果没有索引。in的效率比or的高
- 另: mysql的in会让索引失效吗?(实例)
3. 测试
暂 pass,明日更