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

Hvilken SQL-forespørgsel er hurtigere? Filtrer på Tilmeldingskriterier eller Hvor-klausul?

Præstationsmæssigt er de de samme (og producerer de samme planer)

Logisk set bør du lave den operation, der stadig har mening, hvis du erstatter INNER JOIN med en LEFT JOIN .

I netop dit tilfælde vil dette se sådan ud:

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

eller dette:

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

Den tidligere forespørgsel vil ikke returnere nogen faktiske match for a.id andet end 1 , så sidstnævnte syntaks (med WHERE ) er logisk mere konsistent.



  1. Behøver at droppe en database ikke ske i nogen transaktion?

  2. Linux filsystemer og PostgreSQL kontrolpunkt benchmarks

  3. Oracle UTL_HTTP Post Multipart/Form-Data (JSON &ZIP) Eksempel

  4. MS-Access Recordset og klassemodul