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

Kinerja SQL pada LEFT OUTER JOIN vs NOT EXISTS

Tautan Joe adalah titik awal yang baik. Quassnoi juga membahas ini.

Secara umum, jika bidang Anda diindeks dengan benar, ATAU jika Anda ingin memfilter lebih banyak catatan (yaitu memiliki banyak baris EXIST di subquery) NOT EXISTS akan berkinerja lebih baik.

EXIST dan NOT EXISTS keduanya hubung singkat - segera setelah catatan cocok dengan kriteria itu akan disertakan atau disaring dan pengoptimal pindah ke catatan berikutnya.

LEFT JOIN akan bergabung dengan SEMUA REKAM terlepas dari apakah mereka cocok atau tidak, lalu saring semua catatan yang tidak cocok. Jika tabel Anda besar dan/atau Anda memiliki beberapa JOIN kriteria, ini bisa sangat sangat intensif sumber daya.

Saya biasanya mencoba menggunakan NOT EXISTS dan EXIST jika memungkinkan. Untuk SQL Server, IN dan NOT IN secara semantik setara dan mungkin lebih mudah untuk ditulis. Ini adalah satu-satunya operator yang akan Anda temukan di SQL Server yang dijamin korsleting.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Desain basis data untuk pengaturan pengguna

  2. Menggunakan merge..output untuk mendapatkan pemetaan antara source.id dan target.id

  3. Bagaimana membandingkan tanggal di SQL Server

  4. Pengantar Fungsi Buatan Pengguna di SQL Server

  5. Cara Mengurangi Ukuran File Data di SQL Server (T-SQL)