2013-04-17 50 views
1

我在嘗試優化表單SELECT SQL_NO_CACHE col FROM TABLE ..的查詢。當我第一次連接到數據庫並執行查詢時,大約需要9秒。當我第二次執行查詢時,需要將近0.1秒。我將SQL_NO_CACHE放在查詢中,以確保mysql不讀取緩存中的結果。我的問題是爲什麼在連接到數據庫(mysql -uroot ...)之後第一次執行查詢比後續執行花費的時間要長得多。查詢的實際執行時間是多少?爲什麼第一次執行沒有查詢緩存的mysql查詢需要比以後執行更長的時間?

回答

2

MySQL可能需要一段時間來預熱其內部緩存。請記住,SQL_NO_CACHE意味着只避免查詢緩存。從性能角度來看,索引緩存是最重要的。如果索引沒有被讀取,那麼在第一次使用索引時會有明顯的處罰。

如果您使用InnoDB,您應該確保您的緩衝池足夠大。大多數服務器應該分配至少幾GB的內存。

+0

所以第一次執行時間並不反映它的實際時間? – awm

+0

就像任何事情一樣,第一次執行時間通常比較慢。 – tadman