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

Dấu thời gian dưới dạng trường int, hiệu suất truy vấn

Sử dụng UNIX_TIMESTAMP trên hằng số thay vì FROM_UNIXTIME trên cột:

SELECT * FROM table
WHERE timestamp_field
   BETWEEN UNIX_TIMESTAMP('2010-04-14 00:00:00')
       AND UNIX_TIMESTAMP('2010-04-14 23:59:59')

Điều này có thể nhanh hơn vì nó cho phép cơ sở dữ liệu sử dụng chỉ mục trên cột timestamp_field , nếu một trong những tồn tại. Cơ sở dữ liệu không thể sử dụng chỉ mục khi bạn sử dụng non- sargable hàm như FROM_UNIXTIME trên cột.

Nếu bạn không có chỉ mục trên timestamp_field sau đó thêm một.

Khi bạn đã làm xong việc này, bạn cũng có thể cố gắng cải thiện hơn nữa hiệu suất bằng cách chọn các cột bạn cần thay vì sử dụng SELECT * .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tại sao date () không chuyển đổi YYMMDDHHMM sang định dạng ngày được chấp nhận của MySQL một cách chính xác?

  2. Làm cách nào để lấy kích thước bảng MySQL cho các bảng trong cơ sở dữ liệu?

  3. Truy vấn MySQL hết thời gian chờ:(70100):Việc thực thi truy vấn bị gián đoạn

  4. Thêm nhiều cột trong MySQL bằng một câu lệnh

  5. Lỗi khi sử dụng pymysql trong bình