Perbezaan utama antara klausa EXISTS dan IN dalam SQL: Bila hendak menggunakan klausa yang mana untuk prestasi pertanyaan terbaik?
SQL menyediakan dua klausa berbeza, EXISTS dan IN, untuk mengendalikan perhubungan antara jadual. Memahami perbezaan mereka adalah penting untuk pengoptimuman pertanyaan yang cekap.
Perbandingan EXISTS dan IN
Seperti namanya, EXISTS mengesahkan sama ada baris yang sepadan wujud dalam jadual lain tanpa mendapatkan semula data baris tertentu. IN, sebaliknya, secara eksplisit menyenaraikan nilai yang mungkin untuk dibandingkan dengan medan.
Bila menggunakan EXISTS
Klausa EXISTS bagus apabila anda hanya perlu tahu jika ada padanan (daripada mengira kejadian):
<code class="language-sql">SELECT * FROM table1 WHERE EXISTS (SELECT * FROM table2 WHERE table2.id = table1.id)</code>
Pertanyaan ini mengembalikan baris dalam jadual1 hanya jika baris tersebut mempunyai baris yang sepadan dalam jadual2. Dengan mengelak daripada mengira, EXISTS boleh meningkatkan prestasi dengan ketara.
Bila hendak menggunakan IN
IN sesuai untuk perbandingan terhadap:
<code class="language-sql">SELECT * FROM table1 WHERE id IN (1, 2, 3)</code>
Pertanyaan ini mendapatkan semula baris dalam jadual1 yang medan idnya sepadan dengan mana-mana nilai yang ditentukan.
<code class="language-sql">SELECT * FROM table1 WHERE id IN (SELECT id FROM table2 WHERE name LIKE '%abc%')</code>
Nota Prestasi
Secara sejarah, pertanyaan IN menggunakan jadual dan bukannya senarai akan mencetuskan cantuman bersarang. Walau bagaimanapun, pengoptimum pertanyaan moden selalunya mengendalikan pertanyaan IN dengan lebih bijak, menggunakan rancangan yang dioptimumkan seperti cantuman cantuman atau cantuman cincang.
Kesimpulan
Untuk meringkaskan, EXISTS digunakan untuk menyemak kewujudan, manakala IN menyenaraikan nilai khusus untuk perbandingan. Memilih klausa yang sesuai berdasarkan keperluan pertanyaan anda boleh meningkatkan prestasi dan mengekalkan integriti data.
Atas ialah kandungan terperinci EXISTS lwn. IN dalam SQL: Bila Menggunakan Klausa Mana untuk Prestasi Pertanyaan Optimum?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!