melhor fonte para condições de pesquisa dinâmica:
Condições de pesquisa dinâmica em T-SQL por Erland Sommarskog
há muitas implicações sutis sobre como você faz isso para saber se um índice pode ser usado ou não. Se você estiver na versão correta do SQL Server 2008, basta adicionar
OPTION (RECOMPILE) para a consulta e o valor da variável local em tempo de execução é usado para as otimizações. Considere isso,
OPTION (RECOMPILE) vai pegar este código (onde nenhum índice pode ser usado com esta bagunça de OR s):WHERE
(@search1 IS NULL or example@sqldat.com)
AND (@search2 IS NULL or example@sqldat.com)
AND (@search3 IS NULL or example@sqldat.com)
e otimizá-lo em tempo de execução (desde que apenas @Search2 tenha sido passado com um valor):
WHERE
example@sqldat.com
e um índice pode ser usado (se você tiver um definido na Coluna2)