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. CukupINtidak dapat membandingkan apa pun denganNulltapiExistsbisa. -
misalnya
Exists (Select * from yourtable where bla = 'blabla');Anda mendapatkan benar/salah saat satu pukulan ditemukan/cocok . -
Dalam hal ini
INsort mengambil posisiCount(*)untuk memilih SEMUA baris yang cocok berdasarkanWHEREkarena membandingkan semua nilai.
Tapi jangan lupakan ini juga:
EXISTSdijalankan dengan kecepatan tinggi melawanIN:ketika hasil subquery sangat besar.INmendahuluiEXISTS:ketika hasil subquery sangat kecil.
Rujukan untuk detail selengkapnya: