bedste kilde til dynamiske søgebetingelser:
Dynamiske søgebetingelser i T-SQL af Erland Sommarskog
der er en masse subtile konsekvenser for, hvordan du gør dette, om et indeks kan bruges eller ej. Hvis du er på den korrekte udgivelse af SQL Server 2008, kan du bare tilføje OPTION (RECOMPILE)
til forespørgslen, og den lokale variabels værdi ved kørsel bruges til optimeringerne.
Overvej dette, OPTION (RECOMPILE)
vil tage denne kode (hvor intet indeks kan bruges med dette rod af OR
s):
WHERE
(@search1 IS NULL or [email protected])
AND (@search2 IS NULL or [email protected])
AND (@search3 IS NULL or [email protected])
og optimer det på kørselstidspunktet (forudsat at kun @Search2 blev sendt ind med en værdi):
WHERE
[email protected]
og et indeks kan bruges (hvis du har et defineret på Kolonne2)