Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Как да оптимизирате използването на клаузата ИЛИ, когато се използва с параметри (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 ще търси стойностите на променливите преди да изпълни заявките и ще оптимизира излишните заявки.

Това означава, че действително ще бъде изпълнена само една заявка от четири.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. INSTR() Еквивалент в SQL Server

  2. Съхранена процедура - връщане на идентичност като изходен параметър или скалар

  3. Как да зададете понеделник като първи ден от седмицата в SQL Server

  4. Сравняване на облачни виртуални машини с управлявана облачна база данни

  5. Системни бази данни на SQL Server – поддръжка на Tempdb