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