sql >> データベース >  >> RDS >> Sqlserver

パラメータとともに使用する場合にOR句の使用を最適化する方法(SQL Server 2008)

    SQL Server ORの最適化はあまり得意ではありません 述語。

    これを使用してください:

    SELECT  key3
    FROM    or_table
    WHERE   @key1 = 0
            AND @key2 = 0
    UNION ALL
    SELECT  key3
    FROM    or_table
    WHERE   @key1 = 0
            AND @key2 <> 0
            AND key2 = @key2
    UNION ALL
    SELECT  key3
    FROM    or_table
    WHERE   @key2 = 0
            AND @key1 <> 0
            AND key1 = @key1
    UNION ALL
    SELECT  key3
    FROM    or_table
    WHERE   @key1 <> 0
            AND @key2 <> 0
            AND key1 = @key1
            AND key2 = @key2
    

    SQL Server クエリを実行する前に変数の値を調べ、冗長なクエリを最適化します。

    これは、4つのクエリのうち1つだけが実際に実行されることを意味します。



    1. 休日を除く2つの日付の間の平日数を取得する関数

    2. MariaDBでのBINARY演算子のしくみ

    3. 関連するテーブルから選択して、1つのクエリで複数のテーブルに行を挿入します

    4. SQL SELECTを使用して、最初のN個の正の整数を取得します