Sql Exists vs In
Penyelesaian masalah dalam TSQL boleh didapati melalui kaedah yang berbeza dan hasil yang diingini dapat dilihat menggunakan mana-mana dari mereka. Salah satu cara yang dapat dicapai adalah dengan menggunakan fasal IN dan EXISTS. Penggunaan klausa membantu penapisan keputusan ditetapkan dengan merujuk kepada subquery yang tersedia. Pelaksanaan IN dan EXISTS sedikit berbeza dan perbezaan ini dinilai.
Terdapat pelbagai faktor yang menentukan sama ada atau tidak IN atau EXISTS akan dilancarkan. Salah satunya adalah jumlah data yang terdapat di dalam jadual. Sejumlah besar data menyebabkan pelayan SQL kembali menggunakan imbasan indeks daripada menggunakan Indeks Mencari.
Perbezaan
Perangkaan yang diberikan juga banyak memberi tahu tentang pelan pelaksanaan yang patut diikuti. Perbezaannya ditunjukkan apabila pelayan telah mengumpulkan statistik yang mencukupi untuk membuat keputusan yang sah dan ketika tidak ada statistik yang pertama kalinya. Perkakasan yang digunakan juga menentukan sama ada IN atau EXISTS akan digunakan. Ini bergantung kepada jumlah CPU yang tersedia.
EXIS dijalankan apabila terdapat keperluan untuk memadankan hasil pertanyaan dengan subquery lain. IN pula digunakan ketika mengambil nilai-nilai lajur khusus yang terletak dalam senarai. Keputusan yang digunakan adalah semata-mata berdasarkan kesesuaian, iaitu apabila anda merasa bahawa penggunaannya adalah sesuai.
Sekiranya subquery digunakan dan nilai nol dikembalikan, keseluruhan pernyataan menjadi NULL. Ini berkuat kuasa pada penggunaan kata kunci EXISTS. Penggunaan kata kunci IN adalah tentang apabila perbandingan pelbagai nilai dalam subquery diperlukan. Kata kunci EXISTS digunakan terutamanya dalam penilaian pernyataan benar atau salah dan IN digunakan dalam kebanyakan pernyataan subquery yang bersesuaian.
Secara umum, EXISTS akan lebih cepat daripada IN, sebabnya ketika EXISTS dijalankan, pencarian telah menemui hit dan akan meninjau sama ada keadaan itu terbukti benar. Apabila menjalankan IN, ia mengumpul semua hasil dari subquery dan membentangkannya untuk diproses selanjutnya, dan proses ini mengambil sedikit masa.
Adalah penting untuk ambil perhatian bahawa ungkapan pertanyaan mesti dilakukan dengan betul dan diperiksa sebelum dijalankan. Kegagalan untuk memastikan bahawa pertanyaan adalah hasil yang betul kepada EXISTS dan IN membentangkan nilai yang berbeza, dan ini bukan tujuan penggunaannya dalam pelayan SQL. Pengoptimum mesti sentiasa optimum apabila berfungsi sebagaimana mestinya.
Ringkasan
Penyelesaian masalah dalam TSQL biasanya dilakukan dengan EXISTS dan IN.
Perbezaan yang sedikit akan diperhatikan apabila melancarkan EXISTS dan IN, walaupun pengoptimuman untuk masing-masing harus memberikan nilai yang sama.
Statistik adalah salah satu penentu sama ada EXISTS atau IN akan dilancarkan
Perkakasan yang digunakan juga penting dalam menentukan jika EXISTS atau IN digunakan
Jalankan EXISTS akan berguna apabila perlu mengkorelasikan hasil pertanyaan yang diberikan dengan subquery lain. EXISTS juga sangat umum apabila kenyataan benar atau salah memerlukan penilaian.
DALAM biasanya digunakan apabila terdapat keperluan untuk mendapatkan lajur tertentu dalam senarai. Juga biasa digunakan apabila perbandingan nilai dalam subquery diperlukan.
EXISTS secara amnya lebih cepat daripada IN kerana ia berjalan, mendapati hit, dan menilai sama ada keadaan itu terbukti benar
IN adalah lebih perlahan kerana ia mengumpul semua hasil dari subquery dan memprosesnya.
Walaupun eksekusi yang berbeza hadir, pengoptimuman harus memberi hasil yang serupa dalam EXISTS dan IN.