Rumah >pangkalan data >tutorial mysql >Mengapa pertanyaan \'SELECT COUNT(*)\' saya pada jadual change_event begitu perlahan?

Mengapa pertanyaan \'SELECT COUNT(*)\' saya pada jadual change_event begitu perlahan?

Patricia Arquette
Patricia Arquetteasal
2024-10-31 01:40:02398semak imbas

Why are my

Mengatasi Pertanyaan "SELECT COUNT(*)" Lambat pada MySQL

Pertanyaan anda pada jadual change_event, mengira baris yang melebihi change_event_id tertentu , sedang mengalami kelewatan yang ketara. Tapi kenapa? Mari kita selidiki kemungkinan penyebabnya.

Menyingkap Gelagat InnoDB

Enjin InnoDB MySQL menggunakan kunci primer berkelompok, bermakna kunci utama disimpan bersama data baris dalam halaman data, sebaliknya daripada halaman indeks yang berasingan. Akibatnya, imbasan julat, seperti anda, memerlukan pengimbasan melalui semua baris yang berpotensi lebar dalam halaman data. Faktor ini diburukkan lagi oleh lajur xml_diff jadual, jenis data TEKS yang melambatkan lagi pemprosesan.

Strategi Pengoptimuman

Untuk mempercepatkan pertanyaan, dua pendekatan patut dipertimbangkan :

  • Jadual Optimumkan: Perintah ini menyusun semula halaman data ke dalam tertib diisih, berpotensi meningkatkan kecekapan imbasan julat.
  • Buat Indeks Tambahan: Mewujudkan indeks bukan utama semata-mata pada lajur change_event_id menghasilkan salinan lajur tersebut dalam halaman indeks. Indeks ini boleh diimbas dengan jauh lebih pantas daripada halaman data. Sahkan rancangan explain selepas penciptaan untuk mengesahkan penggunaannya.

Petua Tambahan:

Untuk meningkatkan lagi prestasi, pertimbangkan untuk menukar lajur change_event_id kepada bigint unsigned. Langkah ini menghalang nilai negatif dan juga boleh memperkemas pemprosesan.

Atas ialah kandungan terperinci Mengapa pertanyaan \'SELECT COUNT(*)\' saya pada jadual change_event begitu perlahan?. 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