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

SQL Server 2008 - Условна заявка

най-добрият източник за условия на динамично търсене:

Условия за динамично търсене в T-SQL от Erland Sommarskog

има много фини следствия за това как правите това дали даден индекс може да се използва или не. Ако използвате правилното издание на SQL Server 2008, можете просто да добавите OPTION (RECOMPILE) към заявката и стойността на локалната променлива по време на изпълнение се използва за оптимизациите.

Помислете за това, OPTION (RECOMPILE) ще вземе този код (където не може да се използва индекс с тази бъркотия от OR s):

WHERE
    (@search1 IS NULL or [email protected])
    AND (@search2 IS NULL or [email protected])
    AND (@search3 IS NULL or [email protected])

и го оптимизирайте по време на изпълнение да бъде (при условие, че само @Search2 е предадено със стойност):

WHERE
    [email protected]

и може да се използва индекс (ако имате дефиниран такъв в Колона2)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL - Изваждане на изчерпваща стойност от редове

  2. Локални срещу SaaS:Архитектура на системата за мониторинг на бази данни

  3. IIF(...) не е разпозната вградена функция

  4. Въведение в защитата на ниво ред в SQL Server

  5. Как да получите конкретен формат на датата ('dd-MMM-yyyy') в SELECT заявка SQL Server 2008 R2