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

Permintaan MySQL lambat

Anda hanya meminta dua kolom dalam kueri Anda, jadi indeks bisa/harus masuk ke sana:

  • TanggalWaktu
  • Waktu Muat

Cara lain untuk mempercepat kueri Anda dapat membagi bidang DateTime menjadi dua:tanggal dan waktu.
Dengan cara ini db dapat mengelompokkan secara langsung pada bidang tanggal alih-alih menghitung DATE(...).

DIEDIT:
Jika Anda lebih suka menggunakan pemicu, buat kolom baru(DATE) dan beri nama tanggal baru , dan coba dengan ini (saya tidak bisa mencobanya sekarang untuk melihat apakah itu benar):

CREATE TRIGGER upd_check BEFORE INSERT ON SpeedMonitor
FOR EACH ROW
BEGIN
  SET NEW.newdate=DATE(NEW.DateTime);
END

DIEDIT LAGI:
Saya baru saja membuat db dengan tabel speedmonitor yang sama yang diisi dengan sekitar 900.000 record.
Kemudian saya menjalankan query SELECT newdate,AVG(LoadTime) loadtime FROM speedmonitor GROUP BY newdate dan butuh waktu sekitar 100 detik!!
Menghapus indeks pada bidang tanggal baru (dan membersihkan cache menggunakan RESET QUERY CACHE dan FLUSH TABLES ), kueri yang sama membutuhkan waktu 0,6 detik!!!
Hanya untuk perbandingan:kueri SELECT DATE(DateTime),AVG(LoadTime) loadtime FROM speedmonitor GROUP BY DATE(DateTime) membutuhkan waktu 0,9 detik.
Jadi menurut saya indeks pada tanggal baru tidak baik:hapus saja.
Saya akan menambahkan catatan sebanyak mungkin sekarang dan menguji dua kueri lagi.

EDIT AKHIR:
Menghapus indeks pada kolom tanggal baru dan DateTime, yang memiliki 8 juta catatan pada tabel speedmonitor, berikut adalah hasilnya:

  • memilih dan mengelompokkan pada kolom tanggal baru:7,5 detik
  • memilih dan mengelompokkan pada bidang DATE(DateTime):13,7 detik

Saya rasa ini adalah kecepatan yang bagus.
Waktu yang dibutuhkan untuk mengeksekusi query di dalam command prompt mysql.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Menggunakan Workbench Untuk Terhubung ke Server MySQL Jarak Jauh Melalui SSH Tunnel

  2. Apakah MySQL Connector/J buffer baris saat streaming ResultSet?

  3. Bagaimana cara mengatur permalink posting blog Anda sesuai dengan tanggal dan judul posting?

  4. Memilih catatan N terbesar dalam grup X

  5. Adakah yang bisa menjelaskan kunci asing MySQL?