关于紧凑索引扫描和松散索引扫描快慢的问题
select emp_no, min(salary) from salaries group by emp_no
select emp_no, sum(salary) from salaries group by emp_no;
发现下面的使用紧凑索引扫描反而更快,这是为什么呢?
21
收起
正在回答 回答被采纳积分+1
1回答
大目
2020-09-09 20:31:26
您好,执行出来的效果和预期不同原因有很多方面:
可以看下explain的结果,是否确实使用了松散索引扫描,从SQL来看,是会用的,但MySQL优化器是一个及其复杂的东西,如果优化器分析出来不走松散索引扫描开销更小,那也可能不用松散索引扫描的(可以借助OPTIMIZER TRACE分析MySQL选择的执行路径)
如果你运行MySQL的机器上运行了多个进程,那极有可能是性能抖动导致,我们知道,CPU的核心数是有限的,机器上部署的进程比较多的话,那么极有可能机器执行松散索引扫描时,MySQL并没有抢到时间片执行,或执行了一半被其他进程抢走了时间片,都是可能的;
可以多次测试求平均值,这样获得的效果更加客观一些。
建议测试时,在一个较大的数据量下进行。
祝您学习愉快!
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星