beste bron voor dynamische zoekvoorwaarden:
Dynamische zoekvoorwaarden in T-SQL door Erland Sommarskog
er zijn veel subtiele implicaties over hoe u dit doet of een index kan worden gebruikt of niet. Als u de juiste versie van SQL Server 2008 gebruikt, kunt u gewoon OPTION (RECOMPILE)
toevoegen naar de query en de waarde van de lokale variabele tijdens runtime wordt gebruikt voor de optimalisaties.
Overweeg dit, OPTION (RECOMPILE)
zal deze code nemen (waar geen index kan worden gebruikt met deze puinhoop van OR
s):
WHERE
(@search1 IS NULL or [email protected])
AND (@search2 IS NULL or [email protected])
AND (@search3 IS NULL or [email protected])
en optimaliseer het tijdens runtime (op voorwaarde dat alleen @Search2 werd doorgegeven met een waarde):
WHERE
[email protected]
en een index kan worden gebruikt (als je er een hebt gedefinieerd op Kolom 2)