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

mysql - cari stempel waktu berdasarkan jam

Anda dapat menggunakan JAM() fungsi:

SELECT * FROM 'table' WHERE HOUR(`updatetime`) = 9

Sayangnya, kinerja kueri ini akan mengerikan , segera setelah Anda melewati beberapa ribu baris - fungsi tidak dapat diindeks, jadi akan ada pemindaian tabel penuh setiap kali kueri ini dijalankan.

Apa yang kami lakukan dalam situasi serupa:kami membuat kolom lain updatetime_hour , mengindeksnya, dan mengisinya pada sisipan (dan diperbarui saat pembaruan); maka query menjadi cepat:

SELECT * FROM 'table' WHERE `updatetime_hour` = 9

Ya, kami telah mendenormalisasi data, dan ini sedikit lebih banyak pembersihan, tetapi saya belum melihat solusi yang lebih cepat. (Kami mempertimbangkan dan mengukur pemicu penyisipan dan pembaruan untuk mengisi updatetime_hour dari updatetime , tetapi memutuskan untuk tidak melakukannya; lihat apakah mereka akan berguna bagi Anda.)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Di mana Saya Harus Menyimpan String Koneksi database?

  2. Permintaan MySQL menggunakan CASE untuk PILIH beberapa kolom

  3. Kesalahan:Batas waktu tidak aktif jabat tangan di modul MYSQL Node.js

  4. Memahami Deadlock di MySQL &PostgreSQL

  5. Dapatkah `mysqlcheck` membantu saya menyelesaikan masalah basis data tanpa merusak basis data saya?