nejlepší zdroj pro podmínky dynamického vyhledávání:
Podmínky dynamického vyhledávání v T-SQL od Erlanda Sommarskoga
existuje mnoho jemných důsledků toho, jak to uděláte, pokud jde o to, zda lze index použít nebo ne. Pokud používáte správnou verzi SQL Server 2008, stačí přidat OPTION (RECOMPILE)
na dotaz a pro optimalizace se použije hodnota lokální proměnné za běhu.
Zvažte toto, OPTION (RECOMPILE)
převezme tento kód (kde nelze použít žádný index s touto změtí OR
s):
WHERE
(@search1 IS NULL or [email protected])
AND (@search2 IS NULL or [email protected])
AND (@search3 IS NULL or [email protected])
a optimalizovat jej za běhu tak, aby byl (za předpokladu, že byl předán pouze @Search2 s hodnotou):
WHERE
[email protected]
a lze použít index (pokud ho máte definovaný ve sloupci 2)