Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

SQL Server 2008 - Query condizionale

migliore fonte per condizioni di ricerca dinamiche:

Condizioni di ricerca dinamica in T-SQL di Erland Sommarskog

ci sono molte sottili implicazioni sul modo in cui lo fai per sapere se un indice può essere utilizzato o meno. Se hai la versione corretta di SQL Server 2008 puoi semplicemente aggiungere OPTION (RECOMPILE) alla query e il valore della variabile locale in fase di esecuzione viene utilizzato per le ottimizzazioni.

Considera questo, OPTION (RECOMPILE) prenderà questo codice (dove nessun indice può essere utilizzato con questo pasticcio di OR s):

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

e ottimizzarlo in fase di esecuzione (a condizione che solo @Search2 sia stato passato con un valore):

WHERE
    [email protected]

e un indice può essere utilizzato (se ne hai uno definito su Column2)