Explain Plan
akan menunjukkan kepada Anda mengapa tepatnya Anda harus menggunakan Exists
. Biasanya pertanyaan muncul Exists vs Count(*)
. Exists
lebih cepat. Mengapa?
-
Berkenaan dengan tantangan yang diberikan oleh NULL:ketika subquery mengembalikan
Null
, untuk IN seluruh kueri menjadiNull
. Jadi, Anda juga harus menanganinya. Tetapi menggunakanExist
, itu hanya sebuahfalse
. Jauh lebih mudah untuk mengatasinya. CukupIN
tidak dapat membandingkan apa pun denganNull
tapiExists
bisa. -
misalnya
Exists (Select * from yourtable where bla = 'blabla');
Anda mendapatkan benar/salah saat satu pukulan ditemukan/cocok . -
Dalam hal ini
IN
sort mengambil posisiCount(*)
untuk memilih SEMUA baris yang cocok berdasarkanWHERE
karena membandingkan semua nilai.
Tapi jangan lupakan ini juga:
EXISTS
dijalankan dengan kecepatan tinggi melawanIN
:ketika hasil subquery sangat besar.IN
mendahuluiEXISTS
:ketika hasil subquery sangat kecil.
Rujukan untuk detail selengkapnya: