Rumah >pangkalan data >tutorial mysql >Mengapa pertanyaan \'SELECT COUNT(*) FROM change_event\' saya sangat perlahan walaupun menggunakan indeks utama?

Mengapa pertanyaan \'SELECT COUNT(*) FROM change_event\' saya sangat perlahan walaupun menggunakan indeks utama?

Susan Sarandon
Susan Sarandonasal
2024-10-30 22:43:291119semak imbas

Why is my

Prestasi Perlahan dengan Pertanyaan "SELECT COUNT(*)" Walaupun Penggunaan Indeks

Konteks:

Pertanyaan "PILIH COUNT(*) DARI change_event me WHERE change_event_id > '1212281603783391';" berprestasi sangat perlahan dalam MySQL, mengambil masa lebih seminit untuk dilaksanakan. Ini berlaku walaupun terdapat indeks UTAMA pada lajur "change_event_id".

Kunci Utama Berkelompok InnoDB:

Dalam InnoDB, kunci utama dikelompokkan, bermakna ia adalah disimpan bersama baris data dalam halaman data. Ini memerlukan pengimbasan melalui data baris yang berpotensi besar semasa imbasan julat, yang boleh mengurangkan prestasi. Jadual "change_event" mengandungi lajur TEXT, meningkatkan lagi lebar baris.

Teknik Pengoptimuman:

  • Jadual Optimumkan: Menjalankan "OPTIMIZE TABLE" boleh menyusun semula halaman data untuk diisih mengikut kunci utama. Ini berpotensi meningkatkan prestasi imbasan julat pada kunci utama berkelompok.
  • Buat Indeks Bukan Utama Tambahan: Mencipta indeks bukan utama semata-mata pada lajur "change_event_id" boleh memberikan cara yang lebih pantas untuk mengimbas julat nilai. Pelan explain hendaklah disemak selepas mencipta indeks untuk memastikan penggunaannya.

Syor Tambahan:

  • Laraskan Jenis Data: Jika lajur "change_event_id" meningkat daripada sifar, pertimbangkan untuk menukar jenis datanya kepada "bigint unsigned" untuk mengelakkan nilai negatif.

Atas ialah kandungan terperinci Mengapa pertanyaan \'SELECT COUNT(*) FROM change_event\' saya sangat perlahan walaupun menggunakan indeks utama?. 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