• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
  • 避免在 SQL Server 中盲目地追求一句處理

    發表于:2008-10-13來源:作者:點擊數: 標簽:sqlSQLSqlSERVERServer
    關鍵字: sql SQL Server的處理中,不少人有追求一句出結果的習慣,但必須注意的是,不恰當的合并處理語句,往往會產生不佳的 性能 ,本文針對使用 UNION ALL 代替 IF 語句的合并處理做一個測試,說明這種方法會帶來的負面影響 問題描述 業務 需求 如下: 有
    關鍵字: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

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>