mejor fuente de condiciones de búsqueda dinámica:
Condiciones de búsqueda dinámica en T-SQL por Erland Sommarskog
hay muchas implicaciones sutiles sobre cómo hacer esto en cuanto a si se puede usar un índice o no. Si está en la versión correcta de SQL Server 2008, simplemente puede agregar OPTION (RECOMPILE) a la consulta y el valor de la variable local en tiempo de ejecución se utiliza para las optimizaciones.
Considere esto, OPTION (RECOMPILE) tomará este código (donde no se puede usar ningún índice con este lío 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)
y optimizarlo en tiempo de ejecución para que sea (siempre que solo se haya pasado @Search2 con un valor):
WHERE
example@sqldat.com
y se puede usar un índice (si tiene uno definido en Column2)