我正在为缓慢的查询调优SQL查询时间,但是每次我得到不同的时间,所以我无法评估我的优化解决方案。
例如,我运行了三次查询select * from abc where abc.status in (x,y,z) and abc.scale>123;,结果时间为5s、11s、9s。
我关闭了查询缓存。如何获得一个干净的沙箱来调优慢速查询?
发布于 2011-07-14 09:23:07
最有可能的是,服务器正在后台做其他不同的事情。MySQL查询很大程度上受到IO的影响,在机器上执行IO工作的其他进程的干扰会显着地改变查询时间。
如果您想要可重复的基准测试,请确保在一个独立的服务器上运行这个程序。
发布于 2011-07-15 06:36:43
另一种选择是重复运行查询(如数百次),并对结果进行一些统计分析。关键是隔离任何合并变量(在同一台机器上运行测试,使用相同的脚手架代码,并且在运行的其他任务中不存在任何偏差(我知道这很困难)。然后,您可以对某个特定查询是否优于其他查询做出可能的结论(尽管量化确切的改进会带来危险)。
或者您可以只使用EXPLAIN <query>,它将显示一个查询计划,并让您很好地了解两个查询中哪一个“更好”。
https://serverfault.com/questions/290192
复制相似问题