Rumah >pangkalan data >tutorial mysql >EXISTS lwn. IN dalam Subkueri MySQL: Yang Berprestasi Lebih Baik?
Subqueries dengan EXISTS vs IN dalam MySQL: Perbandingan Prestasi
Subqueries memainkan peranan penting dalam mengekstrak data tertentu daripada pangkalan data. Dua kaedah subquery biasa ialah EXISTS dan IN. Walaupun kedua-duanya boleh mencapai hasil yang serupa, mereka mempamerkan ciri prestasi yang berbeza.
Pertimbangkan dua pertanyaan berikut:
Kaedah 1:
SELECT * FROM tracker WHERE reservation_id IN ( SELECT reservation_id FROM tracker GROUP BY reservation_id HAVING ( method = 1 AND type = 0 AND Count(*) > 1 ) OR ( method = 1 AND type = 1 AND Count(*) > 1 ) OR ( method = 2 AND type = 2 AND Count(*) > 0 ) OR ( method = 3 AND type = 0 AND Count(*) > 0 ) OR ( method = 3 AND type = 1 AND Count(*) > 1 ) OR ( method = 3 AND type = 3 AND Count(*) > 0 ) );
Kaedah 2:
SELECT * FROM tracker t WHERE EXISTS ( SELECT reservation_id FROM tracker t3 WHERE t3.reservation_id = t.reservation_id GROUP BY reservation_id HAVING ( METHOD = 1 AND TYPE = 0 AND COUNT(*) > 1 ) OR ( METHOD = 1 AND TYPE = 1 AND COUNT(*) > 1 ) OR ( METHOD = 2 AND TYPE = 2 AND COUNT(*) > 0 ) OR ( METHOD = 3 AND TYPE = 0 AND COUNT(*) > 0 ) OR ( METHOD = 3 AND TYPE = 1 AND COUNT(*) > 1 ) OR ( METHOD = 3 AND TYPE = 3 AND COUNT(*) > 0 ) );
Dari segi prestasi, Kaedah 2 dengan ketara mengatasi Kaedah 1, mengambil masa di bawah 1 saat untuk dilaksanakan berbanding lebih 10 saat. Untuk memahami sebab percanggahan ini, kita mesti menyelidiki cara dalaman setiap kaedah.
WUJUD vs DALAM: Perbezaan Utama
Pertimbangan Prestasi
Kesimpulan
Secara amnya, WUJUD disyorkan apabila subkueri dijangka mengembalikan sejumlah besar baris atau jika nilai nol terlibat. Untuk subkueri kecil, IN boleh menjadi lebih berprestasi. Anda sentiasa dinasihatkan untuk menggunakan Explain Plan untuk menentukan pendekatan terbaik untuk pertanyaan tertentu.
Atas ialah kandungan terperinci EXISTS lwn. IN dalam Subkueri MySQL: Yang Berprestasi Lebih Baik?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!