Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

SELECT COUNT(*) lambat, bahkan dengan klausa where

InnoDB menggunakan kunci utama yang dikelompokkan, sehingga kunci utama disimpan bersama dengan baris di halaman data, bukan di halaman indeks terpisah. Untuk melakukan pemindaian jarak jauh, Anda masih harus memindai semua baris yang berpotensi lebar di halaman data; perhatikan bahwa tabel ini berisi kolom TEXT.

Dua hal yang akan saya coba:

  1. jalankan optimize table . Ini akan memastikan bahwa halaman data disimpan secara fisik dalam urutan yang diurutkan. Hal ini dapat mempercepat pemindaian rentang pada kunci utama yang dikelompokkan.
  2. buat indeks non-utama tambahan hanya pada kolom change_event_id. Ini akan menyimpan salinan kolom itu di halaman indeks yang lebih cepat untuk dipindai. Setelah membuatnya, periksa rencana penjelasan untuk memastikannya menggunakan indeks baru.

(Anda juga mungkin ingin membuat kolom change_event_id bigint tidak ditandatangani jika bertambah dari nol)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Django:sqlite untuk dev, mysql untuk prod?

  2. Mengoptimalkan panggilan fungsi yang tersimpan dalam klausa SELECT dan WHERE

  3. Menghitung Median dengan Mysql

  4. Fungsi Agregat MySQL tanpa klausa GROUP BY

  5. PHP Menyisipkan data dari satu tabel ke tabel lainnya