联合索引查询原理以及全值匹配规则
- 等值匹配规则,和where字段的顺序无关
- 最左侧列匹配,意味着不能跳过字段
- 最左前缀匹配,意味着like只能匹配左确定部分
- 范围查找规则,对联合索引最左侧的列进行范围查询才能使用索引。
- 等值匹配+范围匹配
当我们在SQL里进行分组时,如何才能使用索引
对于group by后的字段,最好也是按照联合索引里的最左侧的字段开始,按顺序排列开来,这样的话,可以运用上索引来直接提取一组一组的数据,然后针对每一组的数据执行聚合函数就可以。本质上就是利用索引已经排好序的特点,避免针对杂乱无章的数据利用临时磁盘文件加上部分内存数据结构进行耗时耗力的现场排序和分组。
设计索引时,一般考虑哪些因素
1.where, order by和group by后面跟的字段都是联合索引最左侧开始的部分字段
2.针对选择性高的列建立索引,针对小类型的字段建立索引,避免占用过大空间,如果字段太大,那么也可以使用前20个字符这样的方式建立索引,那么使用等值查询的时候就能使用到前20个字符的索引,如果是范围查询就不能使用这样的索引。
3.一般设计索引别太多,建议两三个联合索引就应该覆盖掉这个表的全部查询了,因为维护索引是件麻烦事,另外主键一定是自增的,避免聚簇索引不会频繁的裂分页。