Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Mengoptimumkan COUNT(*) Pertanyaan dalam MySQL Tanpa Subquery?

Bagaimana untuk Mengoptimumkan COUNT(*) Pertanyaan dalam MySQL Tanpa Subquery?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-11-05 13:49:01311semak imbas

How to Optimize COUNT(*) Queries in MySQL Without Subqueries?

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:

  • Operator GROUP BY mengelompokkan baris berdasarkan medan 'gid'.
  • Setiap kumpulan kemudiannya dinilai menggunakan klausa HAVING, yang menapis kumpulan dengan kiraan kurang daripada atau sama dengan 10.
  • Klausa ORDER BY digunakan pada hasil yang ditapis.

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn