Tôi có một truy vấn có thể được thể hiện bằng 2 cách khác nhau với cùng kết quả. Cái nào tốt hơn - cho hiệu suất hoặc các lý do khác?Truy vấn mySQL date nào hoạt động tốt hơn?
truy vấn đầu tiên:
SELECT post_id FROM posts
WHERE post_date BETWEEN '2010-01-01 00:00:00' AND '2010-12-31 23:59:59'
Thứ hai truy vấn:
SELECT post_id FROM posts
WHERE YEAR(post_date)=2010
Cảm ơn trước.
Sau khi đề xuất cho điểm chuẩn Tôi đã có một số tìm kiếm và kiểm tra. Bài kiểm tra của tôi không phải là điểm chuẩn vì một số vấn đề trên máy tính của tôi nhưng họ đã cho tôi một số ý tưởng.
Tôi đã kiểm tra bảng xếp hàng 4000 của mình và không có sự khác biệt quan trọng nào. BETWEEN lệnh chỉ là 0,01-0,02 giây hơn YEAR (post_date) tại 0,09 tổng thời gian truy vấn. Có vẻ như sử dụng YEAR (post_date) sẽ tốt cho cả hiệu suất và khả năng sử dụng.
Và tôi đã học được rằng trong khi tìm kiếm; nếu giờ hoặc vài phút là không quá quan trọng, GIỮA thể được sử dụng như thế này:
SELECT post_id FROM posts
WHERE post_date BETWEEN '2010-01-01' AND '2010-12-31'
tại sao bạn không tự đánh giá nó? – dbemerlin
Lưu ý: 'GIỮA '2010-01-01' VÀ '2010-12-31'' làm điều gì đó * hơi * đáng ngạc nhiên: không bao gồm ngày cuối cùng, vì nó được mở rộng nội bộ thành' GIỮA' 2010-01-01 00 : 00: 00 'AND' 2010-12-31 00: 00: 00'' – Piskvor
@dbemerlin: Bởi vì những người khác (như tôi) có thể đến xem câu trả lời và kết quả của người khác. –