2011-05-10 59 views
3

在使用MySQL和一些真正的「性能貪婪查詢」時,我注意到,如果我運行這樣一個貪婪的查詢,它可能需要2或3分鐘才能計算出來。但是,如果在第一次完成後立即重試查詢,則只需幾秒鐘。 MySQL存儲「最後的x個查詢」之類的東西嗎?MySQL是否以某種方式存儲最後一個查詢(s)?

回答

5

簡短的回答是肯定的。有一個查詢緩存。

查詢緩存存儲SELECT語句的文本以及發送給客戶端的相應結果。如果稍後收到相同的語句,服務器將從查詢緩存中檢索結果,而不是再次解析並執行該語句。查詢緩存在會話中共享,因此可以發送由一個客戶端生成的結果集,以響應另一個客戶端發出的相同查詢。

here

+0

亞歷克斯,感謝格式更改。打我吧:) – 2011-05-10 03:01:34

0

用於查詢執行計劃將被計算和重新使用。數據可以被緩存,所以後續執行會更快。

0

是的,取決於如何配置MySQL服務器,它可能使用查詢緩存。這將存儲相同查詢的結果,直到達到某個限制(如果您控制服務器,則可以設置該限制)。請閱讀http://dev.mysql.com/doc/refman/5.1/en/query-cache.html以瞭解更多關於如何調整查詢緩存以加快應用程序的速度,如果它發出許多相同的查詢。

相關問題