2011-06-10 72 views
2

讓我提前說,我對SQL查詢經歷的算法瞭解甚少,所以請原諒我的無知。衡量SQL查詢的性能

我的問題是:你如何評估特定SQL查詢的性能?哪些指標被考慮?

例如,

SELECT * FROM MyTable; 

SELECT * FROM MyTable UNION SELECT * From MyTable; 

我猜第二個是慢了很多,即使這兩個查詢返回相同的結果。但是,如何評價這兩者並決定哪一個更好?爲什麼?

是否有工具可以做到這一點?是否有任何類型的SQL堆棧跟蹤?等等...

謝謝。

+1

絕對有專門用於此http://www.sql-server-performance.com/ – 2011-06-10 05:00:12

回答

2

假設你正在談論SQL服務器(你沒有指定...):

你需要尋找到SQL Server事件探查 - 和周圍的最好的介紹是由六部分組成網絡直播系列名爲

Mastering SQL Server Profiler

其中布拉德MacGehee引導您如何開始使用探查和如何從中得到。

紅門軟件還發布關於Mastering SQL Server Profiler(也由布拉德)

+1

的書籍和網站。關鍵字是** profiler **。如果您搜索了它,也可以查找它們,然後集成到您的環境中,並且可以保留有關您執行的查詢類型的統計信息。 – 2011-06-10 05:40:38

+1

太好了。好的地方開始。謝謝! – Eric 2011-06-10 14:56:36

1

一個免費的電子圖書也假設你正在談論有關SQL Server中,如果您使用的是SQL Server Management Studio中,那麼你可以嘗試「顯示估計執行計劃「和/或」包括實際執行計劃「(從查詢菜單中)。

區別在於第一個不執行查詢,而第二個不執行查詢。所以第二個更準確,但第一個是有用的,如果你只想執行'更輕'的查詢。

兩者都顯示執行樹。您可以將鼠標懸停在每個節點上並查看統計信息。 用來比較的是'估計子樹成本'(越高越好)。

希望這有幫助。