Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

SQL Server 2008 – Bedingte Abfrage

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)