Bagaimanakah Saya Boleh Mempercepatkan Pertanyaan \'SELECT COUNT(*)...\' dengan Klausa WHERE dalam MySQL?

DDD
Lepaskan: 2024-10-31 02:10:02
asal
362 orang telah melayarinya

How Can I Speed Up a Slow

Mengoptimumkan "SELECT COUNT(*)..." dengan Where Clause

Isu yang dihadapi melibatkan "SELECT yang perlahan" COUNT(*)" dalam MySQL, walaupun apabila klausa "WHERE" digunakan. Untuk menangani cabaran ini, adalah penting untuk memahami mekanisme storan MySQL.

Kunci Utama Berkelompok

InnoDB, enjin storan yang digunakan dalam contoh ini, menggunakan kunci utama berkelompok . Ini bermakna kunci utama disimpan bersama baris data dalam halaman data yang sama, bukannya dalam halaman indeks yang berasingan. Akibatnya, melakukan imbasan julat pada kunci utama berkelompok memerlukan pengimbasan melalui semua baris, termasuk nilai lajur yang berpotensi lebar. Jadual yang dimaksudkan mengandungi lajur TEKS, yang memburukkan lagi isu prestasi.

Strategi Pengoptimuman

Untuk mengoptimumkan pertanyaan ini, pertimbangkan strategi berikut:

  1. Jadual Optimumkan: Menjalankan "OPTIMIZE TABLE" memastikan halaman data disusun secara fizikal mengikut susunan. Pengoptimuman ini berpotensi meningkatkan prestasi imbasan julat pada kunci utama berkelompok.
  2. Buat Indeks Tambahan: Pertimbangkan untuk mencipta indeks bukan utama semata-mata pada lajur "change_event_id". Ini akan membuat salinan lajur tersebut dalam halaman indeks, yang jauh lebih pantas untuk diimbas berbanding kunci primer berkelompok. Sahkan pelan terangkan selepas mencipta indeks untuk mengesahkan penggunaannya.

Cadangan Tambahan

Untuk meningkatkan lagi prestasi, pertimbangkan untuk mengubah suai lajur "change_event_id" menjadi "BIGINT UNSIGNED" jika ia meningkat daripada sifar. Perubahan ini boleh mengakibatkan keperluan storan berkurangan dan prestasi yang dipertingkatkan.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mempercepatkan Pertanyaan \'SELECT COUNT(*)...\' dengan Klausa WHERE 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!