mysql中sql语句=,>的时候的索引设置


https://www.percona.com/blog/2015/04/27/indexing-101-optimizing-mysql-queries-on-a-single-table/

中,提到了在mysql中,如果在sql语句中有各类=,>等符号,应该如何选择索引做了简单的小结

1) SELECT c1, c2 FROM t WHERE c = 100
   当然建立(c, c1, c2)索引最高效了

2) 多个=的情况
   SELECT * FROM t WHERE c = 100 and d = 'xyz'
  索引应该是(c,d)或者(d,c)

3) 有相等也有不等的情况
   SELECT * FROM t WHERE c > 100 and d = 'xyz'

  这个时候要先(d,c),先选择等于的D在索引顺序前更好

4) 多个相等,不等并存
   SELECT * FROM t WHERE c > 100 and b < 10 and d = 'xyz'
     这个时候,用(d,c)还是(d,b)要看具体情况

5) 有相等并order的情况
SELECT * FROM t WHERE c = 100 and d = 'xyz' ORDER BY b
  原则是首先过滤,再排序,
所以选择建立(d,c,b)(c,d,b)都是不错的选择

6)有不等和order情况
SELECT * FROM t WHERE c > 100 and d = 'xyz' ORDER BY b

   这个时候看具体情况:
(d,b),(d,c)

猜你喜欢

转载自jackyrong.iteye.com/blog/2207884