Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Kueri SQL mana yang lebih cepat? Filter pada kriteria Gabung atau klausa Di mana?

Dari segi kinerja, keduanya sama (dan menghasilkan rencana yang sama)

Logikanya, Anda harus membuat operasi yang masih masuk akal jika Anda mengganti INNER JOIN dengan LEFT JOIN .

Dalam kasus Anda, ini akan terlihat seperti ini:

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

atau ini:

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

Kueri sebelumnya tidak akan mengembalikan kecocokan sebenarnya untuk a.id selain 1 , jadi sintaks yang terakhir (dengan WHERE ) secara logis lebih konsisten.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cari Tahu apakah Partisi Dikompresi di SQL Server (T-SQL)

  2. MySQL - Arti KUNCI UTAMA, KUNCI UNIK dan KUNCI saat digunakan bersama saat membuat tabel

  3. Crystal Reports vs. Layanan Pelaporan Microsoft SQL Server

  4. Ubah format waktu tanggal default pada satu database di SQL Server

  5. Sisipan Massal SQL Server – Bagian 2