Menggunakan COUNT(*) dengan berkesan dalam Klausa WHERE MySQL
Menentukan sama ada nilai berbeza lajur mempunyai kiraan yang melebihi ambang tertentu adalah perkara biasa tugas dalam MySQL. Walaupun nampaknya mudah untuk menggunakan COUNT(*) dalam klausa WHERE untuk menapis hasil, pendekatan sedemikian boleh menjadi tidak cekap.
Untuk mengelakkan pendekatan intensif sumber ini, pertimbangkan untuk menggunakan sintaks alternatif berikut:
<code class="sql">SELECT DISTINCT gid FROM `gd` GROUP BY gid HAVING COUNT(*) > 10 ORDER BY lastupdated DESC</code>
Dengan menggunakan klausa GROUP BY, MySQL mengumpulkan baris mengikut nilai gid yang berbeza. Klausa HAVING kemudiannya menggunakan fungsi agregat COUNT(*) pada setiap kumpulan, menapis mereka yang mempunyai kiraan kurang daripada 10. Akhir sekali, klausa ORDER BY mengisih keputusan dalam tertib menurun berdasarkan lajur cap waktu yang dikemas kini terakhir.
Pendekatan ini lebih cekap kerana ia hanya melaksanakan pengagregatan sekali bagi setiap nilai berbeza, dan bukannya sekali untuk setiap baris. Pengoptimuman ini boleh meningkatkan prestasi dengan ketara untuk jadual dengan bilangan baris yang banyak.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengira Nilai Berbeza dengan Cekap dalam Klausa WHERE MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!