sql >> Database teknologi >  >> RDS >> Sqlserver

SQL Server 2008, forskellige WHERE-klausuler med én forespørgsel

Det behøver du ikke, du kan komme uden om det ved at gøre sådan noget som

SELECT  *
FROM    [Query]
WHERE   (@Parameter = 1 AND Column1 = 8)
OR      (@Parameter = 2 AND Column2 = 8)
OR      (@Parameter = 3 AND Column3 = 8)

Men bare fordi du kan gøre noget, betyder det ikke, at du skal. Mindre udførlig SQL betyder ikke bedre ydeevne, så brug af noget som:

IF @Parameter = 1
    BEGIN
        SELECT  *
        FROM    [Query]
        WHERE   Column1 = 8
    END
ELSE IF @Parameter = 2
    BEGIN
        SELECT  *
        FROM    [Query]
        WHERE   Column2 = 8
    END
ELSE IF @Parameter = 3
    BEGIN
        SELECT  *
        FROM    [Query]
        WHERE   Column3 = 8
    END

mens svarende til den første forespørgsel burde resultere i bedre ydeevne, da den vil blive optimeret bedre.



  1. Parametre tabelnavn i .NET/SQL?

  2. Scanninger af allokeringsordre

  3. Sådan bruges Relation::morphMap() til en anden klasse

  4. hvordan man samler flere værdier som en enkelt streng i postgres?