Rumah  >  Artikel  >  pangkalan data  >  Bagaimanakah Saya Boleh Mempercepatkan Pertanyaan \"SELECT COUNT(*)...\" dengan Klausa WHERE dalam MySQL?

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

DDD
DDDasal
2024-10-31 02:10:02363semak imbas

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!

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