mysql联合索引经典实例与解析

来源:互联网 发布:淘宝商品鞋子详情图片 编辑:程序博客网 时间:2024/06/06 06:48
某表有二个索引,一个是a,b,c三字段联合索引,一个是c字段单独索引,请问下列sql语句,能否使用上索引?
1) where a=1 and b=2 and c=3 (使用联合索引)
2) where a = 1 and b>2 and c=3  (使用c索引)
3) where a > 1 and b=2 and c=3  (使用c索引)
4) where a > 1 and b=2 and c>3  (不使用索引)

5) where a>1 and b!=2 (不使用索引)
6) where a!=1 and b>1 (不使用索引)
7) where b = 1 and a = 2  (使用联合索引)

8) where b = 1 (不使用索引)
9) where a = 1 (使用联合索引、若a字段存在单独索引,此处仍优先使用联合索引)

10) where c = 1 order by b (使用c索引)
11) where c = 1 order by a (使用c索引)
12) where b = 1 order by a  (不使用索引)
13) where b = 1 order by c  (不使用索引)
14) where b = 1 group by c  (使用c索引)


备注:
1) 范围查询用不上索引。
3) 联合索引中,若存在范围查询时,优先使用其他准确查找字段中的单独索引。
4) 联合索引中,若a,b,c、 a,b、 a,c、 a 组合(即含有a字段的组合)均为精确查找,则使用联合索引。(与where语句中三个字段出现的顺序无关)
5) 联合索引中,若字段组合中不含有a字段且b、c字段均无单独字段索引,则不使用索引。 
0 0
原创粉丝点击