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

Performa MySQL pada 6 juta tabel baris

Yang ingin Anda pastikan adalah bahwa kueri HANYA akan menggunakan indeks, jadi pastikan indeks mencakup semua bidang yang Anda pilih. Juga, karena ini adalah kueri rentang yang terlibat, Anda harus memiliki venid terlebih dahulu dalam indeks, karena itu ditanyakan sebagai konstanta. Karena itu saya akan membuat dan mengindeks seperti ini:

ALTER TABLE events ADD INDEX indexNameHere (venid, date, time);

Dengan indeks ini, semua informasi yang diperlukan untuk menyelesaikan kueri ada di indeks. Ini berarti, semoga, mesin penyimpanan dapat mengambil informasi tanpa benar-benar mencari di dalam tabel itu sendiri. Namun, MyISAM mungkin tidak dapat melakukan ini, karena tidak menyimpan data di daun indeks, jadi Anda mungkin tidak mendapatkan peningkatan kecepatan yang Anda inginkan. Jika demikian, coba buat salinan tabel, dan gunakan mesin InnoDB pada salinan. Ulangi langkah yang sama di sana dan lihat apakah Anda mendapatkan peningkatan kecepatan yang signifikan. InnoDB memang simpan nilai bidang di daun indeks, dan izinkan indeks penutup.

Sekarang, mudah-mudahan Anda akan melihat hal berikut saat menjelaskan kueri:

mysql> EXPLAIN SELECT date, time FROM events WHERE venid='47975' AND date>='2009-07-11' ORDER BY date;

id  select_type table  type  possible_keys        key       [..]  Extra
1   SIMPLE   events range date_idx, indexNameHere indexNameHere   Using index, Using where


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. hitungan untuk setiap bergabung - pengoptimalan

  2. Klausa OUTPUT di MySQL

  3. variabel terdefinisi global kustom mysql

  4. Tabel hibernate_sequence dihasilkan

  5. Mengejek PDO dengan phpunit