我正在调整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>
,它将向你显示一个查询计划,并且给你一个很好的想法,两个查询中的哪一个是“更好的”。