MySQL in 走不走索引?

1. 连表查询或采用临时表会走索引

参考:解决MySQL中IN子查询会导致无法使用索引问题


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,明日更

你可能感兴趣的:(MySQL in 走不走索引?)