2010-09-29 59 views
0

我正在測試一個非常大的sql查詢方法。我有大約15個連接,一個子連接有2個連接,所以它很複雜。但是每次跑步需要不同的時間。一旦它是4秒,有時80,甚至200秒。這是標準的單元測試,使用FactoryGirl準備數據,數據總是相同的。測試用例中的隨機查詢執行時間

是否有任何mysql配置文件,mysql選項或其他工具,可以找出爲什麼有這麼大的運行時間差異?如何弄清楚?

回答

1

MySQL很有可能緩存某些子查詢和/或連接的結果,這很容易解釋您在響應時間中看到的變化。

至於一個分析器,做一個快速google for "mysql profiler"想出this link,以及a previous question here on SO問了很多相同的問題。

+0

SELECT中有SQL_NO_CACHE,第一次運行可能需要2秒和第二個150秒.... – 2010-09-29 13:57:51

+1

也嘗試內置'EXPLAIN'。只需將'EXPLAIN'放在查詢前面,它會給你一些想法,以瞭解mysql如何獲取數據。 – 2010-09-29 14:15:54