關鍵字:sql
SQL Server的處理中,不少人有追求一句出結果的習慣,但必須注意的是,不恰當的合并處理語句,往往會產生不佳的性能,本文針對使用 UNION ALL 代替 IF 語句的合并處理做一個測試,說明這種方法會帶來的負面影響
問題描述
業務需求如下:
有表A和表B,這兩個表結構一致,為不同的業務服務,現在要寫一個存儲過程,存儲過程接受一個參數,當參數為0時,查詢表A,參數為1時,查詢表B。
A、一般的處理方法
IF @Flag = 0
SELECT * FROM dbo.A
ELSE IF @Flag = 1
SELECT * FROM dbo.B
B、一句的處理方法
SELECT * FROM dbo.A
WHERE @Flag = 0
UNION ALL
SELECT * FROM dbo.B
WHERE @Flag = 1
分析
從語句的簡捷性來看,方法B具有技巧性,它們兩者之間,究竟那一個更好呢?你可能會從性能上來評估,以決定到底用那一種。單純從語句上來看,似乎兩者的效率差不多,下面通過數據測試來反映結果似乎和想像的一樣
建立測試環境(注,此測試環境是為幾個主題服務的,因此結構看起來有些怪異)
延伸閱讀
文章來源于領測軟件測試網 http://www.kjueaiud.com/