Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Jak zoptymalizować użycie klauzuli OR, gdy jest używana z parametrami (SQL Server 2008)

SQL Server nie jest zbyt dobry w optymalizacji OR predykaty.

Użyj tego:

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 sprawdzi wartości zmiennych przed wykonaniem zapytań i zoptymalizuje zbędne zapytania.

Oznacza to, że w rzeczywistości zostanie wykonane tylko jedno zapytanie z czterech.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. 6 sposobów konwersji ciągu na wartość daty/godziny w SQL Server

  2. Jak usunąć plik danych z bazy danych programu SQL Server (T-SQL)

  3. Jak włączyć usługę MSDTC w programie SQL Server?

  4. Notacja kropkowa SQL

  5. Jak przedefiniować kolumny zwracane przez procedurę składowaną w SQL Server