EXISTS digunakan untuk mengembalikan nilai boolean, JOIN mengembalikan seluruh tabel lainnya
EXISTS hanya digunakan untuk menguji apakah subquery mengembalikan hasil, dan korsleting segera setelah itu terjadi. JOIN digunakan untuk memperluas kumpulan hasil dengan menggabungkannya dengan bidang tambahan dari tabel lain yang memiliki relasi.
Dalam contoh Anda, kueri secara semantik setara.
Secara umum, gunakan EXISTS ketika:
- Anda tidak perlu mengembalikan data dari tabel terkait
- Anda memiliki penipuan di tabel terkait (
JOINdapat menyebabkan baris duplikat jika nilai diulang) - Anda ingin memeriksa keberadaan (gunakan alih-alih
LEFT OUTER JOIN...NULLkondisi)
Jika Anda memiliki indeks yang tepat, sebagian besar waktu EXISTS akan tampil identik dengan JOIN . Pengecualian adalah pada subkueri yang sangat rumit, di mana biasanya lebih cepat menggunakan EXISTS .
Jika Anda JOIN kunci tidak diindeks, mungkin lebih cepat menggunakan EXISTS tetapi Anda perlu menguji keadaan khusus Anda.
JOIN sintaks juga lebih mudah dibaca dan lebih jelas secara normal.