2009-07-01 79 views
6

在進行查詢優化時,SHOW STATUS查詢通過一些練習和解釋返回易於理解的值。有關MySQL中last_query_cost的更多信息?

last_query_cost是晦澀難懂的文件。

唯一解釋的是,它必須被認爲是反男子氣概的價值:越小越好。

但是,我們是否有關於此高級值的更多信息?它的單位是什麼?它如何計算(估計)?等等。我們如何將它用於高級分析?

感謝您的寶貴幫助。 :)

回答

2

這與MySQL查詢優化器的工作方式有關。當你輸入並執行一個查詢時,MySQL將構造一個查詢計劃。這是通過評估如何以多種不同方式執行查詢並將「成本」分配給不同的可能性來完成的。這些成本主要基於內部統計數據,幷包括諸如表格中的行數,不同指數的基數等數據。完成後,MySQL選擇最便宜的計劃並執行查詢。 last_query_cost值是此成本值。

正如你毫無疑問出現在manual

爲計算由查詢優化器 最後編譯 查詢的總成本。這對於 比較同一查詢的不同查詢計劃 計劃的成本很有用。默認 值爲0表示沒有查詢已編譯 。默認值 爲0. Last_query_cost具有會話 範圍。

這的確如此。該值僅用於比較不同查詢的定量度量。

如果您想了解更多信息,可以在線查詢優化器上有一些有趣的資源。不幸的是,我沒有任何可用的鏈接,但通過簡單搜索「mysql查詢優化器」來找到一些資源應該不會太難。

+0

確切!我發現這個鏈接http://tinyurl.com/myw73d。非常豐富!現在我真的必須練習和理解如何解釋這個值,以便在優化時做出正確的決定。 ;) 謝謝你的幫助。 :) – Toto 2009-07-01 23:40:08

+1

高性能MySQL是我強烈推薦的一本很好的書。 – 2009-07-01 23:48:11

2

This post使得它聽起來像它可能只是一個估計,所以不是你應該依靠先進的評測:

有一件事我沒告訴你關於 這兩個查詢是價值 Last_query_cost。這是因爲它 表現實際上具有較低的成本 比一個更快的速度較慢,更多的數據密集型 查詢:表重新設計

Variable_name Design1  Design2 
Last_query_cost 20343.599000 71039.632551 

這是相當奇怪的最後一個查詢成本 ,不是嗎?我 不知道如何計算查詢費用是 ;我相信優化器 會在實際執行查詢的 之前計算它。它肯定與 執行這些查詢的實際成本不匹配。它通常是 更符合真實成本,但 並不總是。你絕對不應該依賴它 。