我有一個包含了一個start_date
和end_date
(包括索引,數據格式)項的表。我想返回今天介於這兩個日期之間的所有條目的列表。這裏有兩個選擇,我認爲:搜索2個日期之間的條目在MySQL
1)直接查詢: MySQL查詢(其中28/02/2014是可變的課程):
SELECT * FROM mytable WHERE '28/02/2014' BETWEEN start_date AND end_date
2)日常的cronjob要經過所有條目並將當前在兩個日期之間的字段is_valid
(布爾格式)更新爲true,否則爲false(因爲它不是面向客戶的,所以性能不太重要)。那麼MySQL查詢,選擇項爲:
SELECT * FROM mytable WHERE is_valid = 1
的最終目標是擁有最快的查詢(將在搜索結果中這將是該網站的一個突出頁面中使用)時,項可能達到10萬,甚至數以百萬計的未來。我不知道索引日期是否足夠好,或者如果cronjob只是矯枉過正 - 或者有更好的方法來做到這一點!
在此先感謝您的建議,以供選擇!
編輯:感謝您的答覆 - 這是索引結構好?
保存日期爲INT時間戳和索引他們......當表長大了很多,你可以基於時間戳 – Hackerman
取得分區如果你指數的日期要確保你有一個包含兩個日期覆蓋索引。 – Kickstart
如果您在SELECT中具有用戶標識和類別標識,則您建議的索引將只縮小範圍。也就是說,當你運行select時,索引只會被用到它指向where子句中沒有的值的那一列。爲了您的使用,這可能很好。 – Kickstart