0
我有一個查詢,看起來像這樣後:現在SQL性能 - 與過濾查詢之前或工會
SELECT PersonId,
Note,
Amount
FROM Table1 A
WHERE A.PersonId = @PersonId
UNION
SELECT PersonId,
Note,
Amount
FROM Table2 B
WHERE B.PersonId = @PersonId
UNION
SELECT PersonId,
Note,
Amount
FROM Table3 C
WHERE C.PersonId = @PersonId
,該查詢最終會返回成千上萬的結果,所以我想打造最好的執行查詢的可能。我想知道這是不是工會像這樣的濾波後的PERSONID更高效:
SELECT * FROM
(
SELECT PersonId,
Note,
Amount
FROM Table1 A
UNION
SELECT PersonId,
Note,
Amount
FROM Table2 B
UNION
SELECT PersonId,
Note,
Amount
FROM Table3 C
) A
WHERE A.PersonId = @PersonId
與連接相同嗎?加入每個查詢而不是結束? – Walker
在你的sql開發者中自己試試。比較兩者,你會得到你的結果。據我認爲,加入可能會更快。我認爲查詢優化器會將聯合查詢重建爲聯接查詢。所以加入會更快。但是你爲什麼PersonID不是主鍵? – thirstyAndreas