UPDATE
我認爲現在還不成熟。經過多次測試後,我發現性能沒有提高。我將在這裏執行更多的測試併發布更新。直到那時,不用回答這個問題。SQL查詢UNION性能
我有這樣的查詢...
SELECT DISTINCT TOP 11 [Field_A]
FROM [#TempTable]
WHERE [Field_A] NOT IN (SELECT bo.[Id]
FROM [BusinessObject_Table] bo
UNION
SELECT boTemp.[Id]
FROM [#BusinessObject_Table] boTemp)
該查詢永遠需要一個相當大的數據集上運行。我還在臨時表的Id列中添加了CLUSTERED索引,這可以提高性能,但仍然無法完成。
我代替此查詢這... ...
SELECT DISTINCT TOP 11 [Field_A]
FROM [#TempTable]
WHERE [Field_A] NOT IN (SELECT bo.[Id]
FROM [BusinessObject_Table] bo)
AND [Field_A] NOT IN (SELECT boTemp.[Id]
FROM [#BusinessObject_Table] boTemp)
這秒內完成。有人能解釋這裏發生了什麼嗎?
更新: 我以爲兩個查詢都是一樣的。這是我需要的。
BusinessObject_Table has following Ids: 1, 2, 3
#BusinessObject_Table has: 3, 4, 5
TempTable has rows whose Field_A values are: 1, 2, 3, 4, 6
查詢的結果應該是:6(在上面的查詢其變化)
我將努力讓查詢計劃和崗位他們在這裏。
請張貼計劃。無論如何,查詢都會做不同的事情。第二個檢查它沒有出現在兩個表中。第一張桌子。第一個需要使用'intersect'或第二個'或'是相同的。 – 2012-03-27 09:22:52