Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

mysql - dấu thời gian tìm kiếm theo giờ trong ngày

Bạn có thể sử dụng HOUR () chức năng:

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

Rất tiếc, hiệu suất của truy vấn này sẽ rất kinh khủng , ngay sau khi bạn lướt qua một vài nghìn hàng - các hàm không thể lập chỉ mục, vì vậy, sẽ có toàn bộ bảng quét mỗi khi truy vấn này chạy.

Những gì chúng tôi đã làm trong một tình huống tương tự:chúng tôi đã tạo một cột khác updatetime_hour , lập chỉ mục nó và điền nó vào chèn (và được cập nhật khi cập nhật); sau đó truy vấn trở nên nhanh chóng:

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

Có, chúng tôi đã chuẩn hóa dữ liệu và quản lý nhiều hơn một chút, nhưng tôi vẫn chưa thấy giải pháp nhanh hơn. (Chúng tôi đã xem xét và đo lường các trình kích hoạt chèn và cập nhật để điền vào updatetime_hour từ updatetime , nhưng quyết định chống lại cho hiệu suất; xem chúng có hữu ích cho bạn không.)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. mysql chọn các bản ghi lớn hơn 3 tháng

  2. Không thể cài đặt đá quý mysql trên Mac OS X

  3. Zend \ Db trong ZF2 kiểm soát các giao dịch như thế nào?

  4. Có thể xóa mọi thứ sau 'khoảng trắng' trong trường MySQL không?

  5. Hạn chế kết nối MySQL từ máy chủ cục bộ để cải thiện bảo mật