Mengelakkan Subquery dalam MySQL WHERE Klausa: COUNT(*) Optimization
Apabila bekerja dengan set data yang besar dalam MySQL, pengoptimuman prestasi adalah penting. Satu senario biasa ialah menggunakan COUNT(*) dalam klausa WHERE, yang boleh intensif sumber. Artikel ini meneroka penyelesaian alternatif untuk meningkatkan kecekapan pertanyaan tanpa menggunakan subkueri.
Masalah:
Anda ingin mendapatkan nilai yang berbeza daripada jadual 'gd' di mana kiraan setiap rekod melebihi 10. Biasanya, ini akan dicapai menggunakan pertanyaan seperti:
SELECT DISTINCT gid FROM `gd` WHERE COUNT(*) > 10 ORDER BY lastupdated DESC
Walau bagaimanapun, pendekatan ini melibatkan subkueri yang mahal dalam klausa WHERE.
Penyelesaian:
Daripada menggunakan subkueri, manfaatkan klausa HAVING selepas operasi GROUP BY:
SELECT gid FROM `gd` GROUP BY gid HAVING COUNT(*) > 10 ORDER BY lastupdated DESC
Penjelasan:
Pendekatan ini menghapuskan overhed menjalankan subquery dalam klausa WHERE, meningkatkan prestasi pertanyaan dengan ketara.
Atas ialah kandungan terperinci Bagaimana untuk Mengoptimumkan COUNT(*) Pertanyaan dalam MySQL Tanpa Subquery?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!