联合索引比单列索引优先
字段a的单列索引, (a,b)的联合索引
查询时使用联合索引
联合索引本质
当创建(a,b,c)联合索引时,相当于创建了(a)单列索引,(a,b)联合索引以及(a,b,c)联合索引
想要索引生效的话,只能使用 a和a,b和a,b,c三种组合;当然,我们上面测试过,a,c组合也可以,但实际上只用到了a的索引,c并没有用到!
聚合索引结构
col1表示的是年龄,col2表示的是姓氏,col3表示的是名字。如下图:
非叶子节点是按照年龄排序的,叶子点根据年龄排序之后再根据姓氏和名字排序;解释了最左原则
举例
联合索引(a,b,c)
select * from user where a = 1 and b = 1 and c= 1,使用(a,b,c)
select * from user where a = 1 and b = 1 and c> 1,使用(a,b,c)
select * from user where a = 1 and b > 1 and c> 1,使用(a,b)
select * from user where a > 1 and b > 1 and c> 1,使用(a)
范围查询后面的字段,聚合索引用不了
聚合索引只能使用到第一个范围查询列