Secara umum, INNER JOIN
dan EXISTS
adalah hal yang berbeda.
Yang pertama mengembalikan duplikat dan kolom dari kedua tabel, yang terakhir mengembalikan satu catatan dan, sebagai predikat, mengembalikan catatan hanya dari satu tabel.
Jika Anda melakukan inner join pada UNIQUE
kolom, mereka menunjukkan kinerja yang sama.
Jika Anda melakukan inner join pada recordset dengan DISTINCT
diterapkan (untuk menghilangkan duplikat), EXISTS
biasanya lebih cepat.
IN
dan EXISTS
klausa (dengan korelasi equijoin) biasanya menggunakan salah satu dari beberapa SEMI JOIN
algoritma yang biasanya lebih efisien daripada DISTINCT
di salah satu meja.
Lihat artikel ini di blog saya:
- IN vs. BERGABUNG vs. ADA