beste Quelle für dynamische Suchbedingungen:
Dynamische Suchbedingungen in T-SQL von Erland Sommarskog
Es gibt viele subtile Auswirkungen darauf, wie Sie dies tun, ob ein Index verwendet werden kann oder nicht. Wenn Sie die richtige Version von SQL Server 2008 verwenden, können Sie einfach OPTION (RECOMPILE)
hinzufügen zur Abfrage und der Wert der lokalen Variablen zur Laufzeit wird für die Optimierungen verwendet.
Beachten Sie Folgendes, OPTION (RECOMPILE)
nimmt diesen Code (wobei kein Index mit diesem Durcheinander von OR
verwendet werden kann s):
WHERE
(@search1 IS NULL or [email protected])
AND (@search2 IS NULL or [email protected])
AND (@search3 IS NULL or [email protected])
und zur Laufzeit optimieren (sofern nur @Search2 mit einem Wert übergeben wurde):
WHERE
[email protected]
und ein Index kann verwendet werden (wenn Sie einen für Column2 definiert haben)