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

Kinerja SQL JOIN vs IN?

Secara umum, IN dan JOIN adalah kueri berbeda yang dapat menghasilkan hasil berbeda.

SELECT  a.*
FROM    a
JOIN    b
ON      a.col = b.col

tidak sama dengan

SELECT  a.*
FROM    a
WHERE   col IN
        (
        SELECT  col
        FROM    b
        )

, kecuali b.col unik.

Namun, ini adalah sinonim untuk kueri pertama:

SELECT  a.*
FROM    a
JOIN    (
        SELECT  DISTINCT col
        FROM    b
        )
ON      b.col = a.col

Jika kolom bergabung adalah UNIQUE dan ditandai demikian, kedua kueri ini menghasilkan paket yang sama di SQL Server .

Jika tidak, maka IN lebih cepat dari JOIN pada DISTINCT .

Lihat artikel ini di blog saya untuk detail kinerja:

  • IN vs. JOIN vs. EXISTS


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Permintaan SQL untuk mendapatkan data selama 3 bulan terakhir

  2. Memecahkan Masalah Kemacetan I/O Disk

  3. Apa jenis SQL yang benar untuk menyimpan .Net Timespan dengan nilai> 24:00:00?

  4. Otomatiskan Pekerjaan Pencadangan dan Pemeliharaan Menggunakan Rencana Pemeliharaan di SQL Server

  5. Database tidak dapat dibuka karena versi 782. Server ini mendukung versi 706 dan sebelumnya. Jalur penurunan versi tidak didukung