Bagaimana untuk Mengoptimumkan Pertanyaan \'SELECT COUNT(*)\' Lambat yang Melibatkan Imbasan Julat pada Kunci Utama dalam MySQL?

DDD
Lepaskan: 2024-10-29 18:49:02
asal
958 orang telah melayarinya

How to Optimize a Slow

Pengoptimuman untuk Pertanyaan "SELECT COUNT(*)" Lambat dalam MySQL

Apabila menanyakan jadual besar, prestasi perlahan boleh timbul walaupun terdapat klausa WHERE. Mari kita analisa kes tertentu di mana pertanyaan "SELECT COUNT(*)" dengan kriteria julat mengambil masa yang berlebihan.

Penjelasan yang diberikan oleh "EXPLAIN" mencadangkan imbasan julat sedang berlaku. Walau bagaimanapun, percanggahan prestasi antara kiraan penuh dan kiraan yang ditapis masih tidak dapat dijelaskan.

Setelah meneliti definisi jadual, kami mendapati bahawa lajur "change_event_id" berfungsi sebagai kunci utama, yang disimpan dalam bentuk berkelompok. Ini bermakna bahawa nilai kunci utama disimpan bersama-sama dengan data pada halaman cakera yang sama. Akibatnya, imbasan julat pada kunci utama memerlukan pembacaan melalui semua halaman data.

Untuk meningkatkan prestasi, pertimbangkan strategi berikut:

  • Jadual Optimumkan: Jalankan "OPTIMIZE JADUAL" untuk menyusun semula halaman data dalam susunan yang disusun, yang berpotensi mempercepatkan imbasan julat.
  • Buat Indeks Sekunder: Tentukan indeks bukan utama secara khusus pada "change_event_id "ruangan. Ini akan mewujudkan struktur indeks yang berasingan, membolehkan imbasan julat pada lajur itu dilaksanakan dengan lebih cekap.

Selain itu, adalah disyorkan untuk mengubah suai lajur "change_event_id" menjadi "bigint unsigned" jika ia bertambah daripada sifar. Ini akan memastikan ia boleh menyimpan nilai yang lebih besar tanpa melimpah.

Dengan melaksanakan pengoptimuman ini, prestasi pertanyaan "SELECT COUNT(*)" dengan kriteria julat harus meningkat dengan ketara, menjadikannya setanding dengan kiraan penuh .

Atas ialah kandungan terperinci Bagaimana untuk Mengoptimumkan Pertanyaan \'SELECT COUNT(*)\' Lambat yang Melibatkan Imbasan Julat pada Kunci Utama dalam MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!