sql >> Database >  >> RDS >> Sqlserver

Welke SQL-query is sneller? Filter op Deelnamecriteria of Where-clausule?

Qua prestaties zijn ze hetzelfde (en produceren dezelfde plannen)

Logischerwijs zou u de bewerking moeten uitvoeren die nog steeds zinvol is als u INNER JOIN . vervangt met een LEFT JOIN .

In jouw geval ziet dit er als volgt uit:

SELECT  *
FROM    TableA a
LEFT JOIN
        TableXRef x
ON      x.TableAID = a.ID
        AND a.ID = 1
LEFT JOIN
        TableB b
ON      x.TableBID = b.ID

of dit:

SELECT  *
FROM    TableA a
LEFT JOIN
        TableXRef x
ON      x.TableAID = a.ID
LEFT JOIN
        TableB b
ON      b.id = x.TableBID
WHERE   a.id = 1

De vorige zoekopdracht levert geen echte overeenkomsten op voor a.id anders dan 1 , dus de laatste syntaxis (met WHERE ) is logischerwijs consistenter.



  1. Is er een manier om meerdere triggers in één script te maken?

  2. Oracle SQL Developer:Mislukt - Test mislukt:kon de netwerkadapter geen verbinding tot stand brengen?

  3. AVG ophalen waarbij nul- of nulwaarden worden genegeerd

  4. Kolomnamen van Oracle DB aanhalingstekens