项目中遇到表数据过大问题,于是对于用到的各个字段都加了单一索引,效果不理想,后来加了联合索引,速度简直质的飞跃
首先贴参考https://www.cnblogs.com/chenshishuo/p/5030029.html
简单写一下我的理解:
1、联合索引需要将where中用到的字段以及select后的字段都包含,顺序是:where字段,select字段
2、where字段遵循“最左前缀”,即where语句必须包含联合索引的第一个字段,才会引用索引
3、对于多种情况来说要分析各种查询条件的排列组合,例如a、b、c、d四个字段,a、b、c是where字段,d是select字段,那么如果会出现(a)、(a,b)、(ac)、(b)、(c)、(bc)这几种情况 也就说明a、b、c三个都有可能出现在where的最左侧,那么就要建立三个索引(a,b,c,d)、(b,c,d)、(c,d)。
对于数据量过大的表如果要从中取一条数据,条件很多,建议先添加联合索引查出id,然后根据id检索详细信息(未测,不知道效率如何)。