най-добрият източник за условия на динамично търсене:
Условия за динамично търсене в 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)