Rumah > Artikel > pangkalan data > Bagaimana untuk Mengoptimumkan Pertanyaan \'SELECT COUNT(*)\' Lambat yang Melibatkan Imbasan Julat pada Kunci Utama dalam MySQL?
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:
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!