每次调整的MySQL查询时间都是不同的

我正在调整SQL查询时间来查询缓慢的查询,但是每次我得到不同的时间,所以我无法评估我的优化解决scheme。

例如,我运行查询select * from abc where abc.status in (x,y,z) and abc.scale>123; 三次,我得到的结果时间像5s,11s,9s。

我已经closures了查询caching。 如何获得一个干净的沙箱来调整我的慢查询?

服务器很可能在后台执行其他不同的操作。 MySQL的查询受IO的影响很大,其他进程在IO上运行的进程的干扰可以显着改变查询时间。

确保你在一个独立的服务器上运行这个,如果你想要可重复的基准。

有一个原始的和无污染的环境的另一种select是反复运行你的查询(如,数百次),并做一些统计分析你的结果。 关键是要隔离任何混合variables(在同一台机器上运行testing,使用相同的脚手架代码,并且在其他任务运行时没有任何偏见(难点,我知道)),然后可以做出概率性的结论,查询比其他的更好(虽然量化的确实改善是危险的)。

或者你可以使用EXPLAIN <query> ,它将向你显示一个查询计划,并且给你一个很好的想法,两个查询中的哪一个是“更好的”。