0

我有一個存儲過程,它包含一些返回它們的聯合結果的Select語句。作爲批處理的選擇語句和多選擇語句之間的比較

我想和寫一個選擇,而不是幾個選擇,並且想比較它們的執行計劃(SP和一個Select語句)。

問題是運行這個twe語句時(SP和Select)sp中的所有select語句都有它們的執行計劃。我想要將SP的執行計劃作爲UNIT。

我還有一個問題。考慮附加在這篇文章上的執行計劃。是所有語句的執行計劃的總和成本必須是100%嗎?

但是爲什麼這個執行計劃的所有陳述的總和成本不是100%?

Execution plan

感謝

+2

無法訪問您的執行計劃,您的總計是否大於或小於100%?它有多少? – Rozwel 2011-03-28 19:24:03

+1

我無法訪問您的執行計劃,如果我將創建一個「免費」的RapidShare賬戶來實現它,我會被詛咒。很可能你有一個帳戶,並不認爲這是一個問題,但你可能會解僱很多志願者來幫助。 – 2011-03-28 19:54:58

+0

@Lieven:我再次改變它。請嘗試 – Arian 2011-03-28 20:07:09

回答

0

如果你正在嘗試沿線的比較邏輯的兩個版本,然後腳本:

Exec <storedProc> 

Select <data> From <tables> 

會讓你做到這一點。是的執行計劃會顯示存儲過程中的所有查詢。查找SP之外發生的查詢計劃。如果他們給總成本> 50%,那麼SP表現更好。請注意,如果您的SP採用參數,請確保您在一系列參數值範圍內比較執行計劃。

+0

我更改執行計劃的鏈接,現在就可以下載它 – Arian 2011-03-28 19:42:10

0

一個UNION是幾個SELECT語句。你實質上是在說:「向我展示這個查詢的結果,加入這個查詢的結果,並加入這個查詢的結果......」SQL Server如何從這些查詢中得到結果而不執行它們?

+0

我希望以SP爲單位進行成本執行。不花費所有選擇sp – Arian 2011-03-28 18:40:59

+0

@Nima內部 - 然後將其重寫爲一個「SELECT」語句。如果你有多個'SELECT',它不是一個單元。 SQL Server必須獨立執行它。 – JNK 2011-03-28 18:43:33