sql优化
表结构如下:
待优化sql执行情况如下:
去掉其中一个不带索引的字段执行结果如下:
查看执行计划:
尝试强制走callOutTime索引时间更长了:
《回头看》:不走索引和强制走索引之后时间更长的原因可能是:mysql判断使用callOutTime时 需要回表的成本已经大于全表扫了 所以没有走索引
尝试用子查询发现子查询也没有走索引:
《回头看》:走个鬼啊,都说了回表啦
联合索引
ALTER TABLE CallOutRecord ADD INDEX idx_time_callCseq (callOutTime,callCseq);
快了一些但还不够
《回头看》:加了联合索引后,不用回表了,走了覆盖索引然后在服务器层进行的where过滤
另一个sql:![]()
用了sum之后就不走索引了:
发现与linkTime有关,所以进一步将开始的2字段的联合索引扩展至3字段,但是有又发现一个问题:
删除索引,更改组合顺序:
可以考到type一个是index一个是range,且filtered也不同