sql >> Database >  >> RDS >> Sqlserver

SQL Server 2008, verschillende WHERE-clausules met één query

Dat hoeft niet, je kunt het omzeilen door iets te doen als

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

Maar alleen omdat je iets kunt doen, wil nog niet zeggen dat je het moet doen. Minder uitgebreide SQL betekent niet betere prestaties, dus gebruik zoiets als:

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

terwijl gelijk aan de eerste zoekopdracht zou moeten resulteren in betere prestaties omdat deze beter zal worden geoptimaliseerd.



  1. Zoeken in meerdere tabellen (SQL)

  2. kan de externe sleutel niet laten vallen

  3. ORA-01882 verkrijgen:tijdzoneregio niet gevonden met Oracle UCP, op aws ec2-instantie?

  4. MySQL:door komma's gescheiden lijst in meerdere rijen splitsen