này là cơ bản cấu trúc ngày-thời gian của tôi:Làm thế nào để tối ưu hóa tìm kiếm thời gian ngày trong Mysql?
primary key(datetime) key
auot_id date_time user_id
1 2010-10-01 20:32:34 1
2 2010-10-02 20:32:34 1
3 2010-11-03 20:32:34 2
4 2010-10-04 20:32:34 1
5 2010-11-05 20:32:34 1
Và tôi muốn để có được kết quả của day(date_time)
tại '2010-10'
và user_id = '1';
SQL của tôi là:
SELECT * FROM datetime WHERE user_id = 1 AND DATE_FORMAT(date,'%Y-%m') = '2010-10'
nhưng màn hình hiển thị EXPLAIN
đang :
SIMPLE datetime ALL (NULL) (NULL) (NULL) (NULL) 5 Using where
vì vậy, dòng mã này dường như không có vẻ rất hiệu quả。Tôi làm cách nào để xây dựng bảng để làm cho tìm kiếm của tôi hiệu quả hơn ??
Cảm ơn bạn rất nhiều !!
Tôi mới sử dụng mysql. Vì vậy, tôi không chắc chắn về loại chỉ mục nào tôi nên thêm vào? Tôi nghĩ rằng tôi đã lập chỉ mục trên chúng: INDEX 'date' (' date', 'user_id') – qinHaiXiang
Bạn muốn nó theo cách khác xung quanh' user_id' là một giá trị "tĩnh", khi 'date' được chuyển đến một hàm . – Danosaure
Xem https://dba.stackexchange.com/a/140693/39319 nơi người dùng giải thích tốt hơn cách bao gồm tất cả các khoảng thời gian và ngày nếu bạn lo ngại về giao dịch nửa đêm –