我有一個包含多個語句和UNION ALL
的大型SQL查詢。我現在正在做這樣的事情:有條件的選擇查詢
DECLARE @condition BIT;
SET @condition = 0;
SELECT * FROM table1
WHERE @condition = 1;
UNION ALL
SELECT * FROM table2
在這種情況下,table1不會返回任何結果。但是,該查詢對於許多聯接而言很複雜(如FullTextTable
)。執行計劃的估計顯示成本很高,但實際的行數和執行時間似乎表現出來。這是過濾整個查詢的最有效方式,還是有更好的方法?如果可能,我不希望第一個選擇中的任何內容運行。
所以,你要做的是,如果@條件是真的,從第一個查詢中選擇並加入到第二個查詢中,否則只需選擇第二個查詢? – DForck42 2010-11-08 15:57:02
@ DForck42:這是正確的,但每個選擇都很複雜,並且有很多選擇,所以請考慮一個「可擴展」的解決方案,而不是一堆if/elses。 – 2010-11-08 16:39:58