將索引添加到具有數百萬行的表的datetime類型的列是否安全? 如果查詢的datetime列在where子句中,如 where finishedon >=DATE_SUB(NOW(), INTERVAL 2 DAY) order by table_name.finishedon desc
;將mysql索引到日期時間類型的列
hereon是一個日期時間格式的列。
將索引添加到具有數百萬行的表的datetime類型的列是否安全? 如果查詢的datetime列在where子句中,如 where finishedon >=DATE_SUB(NOW(), INTERVAL 2 DAY) order by table_name.finishedon desc
;將mysql索引到日期時間類型的列
hereon是一個日期時間格式的列。
如果您指定的查詢有索引,請選擇快速,請注意,如果DATETIME的類型轉換已完成,那麼將不會使用索引,但在這種情況下它很好。
請使用InnoDB引擎,如果更新和插入是在這樣一個大的數據庫頻繁,以提高性能,防止表級鎖更流暢的選擇
對於此查詢:
select table_name.*
from table_name
where finishedon >= DATE_SUB(NOW(), INTERVAL 2 DAY)
order by table_name.finishedon desc;
那麼你的指數將幫助對於where
和order by
。
請注意,對該查詢的輕微更改可能會使索引對實用程序的用處不大。例如:
where finshedon - interval 2 day >= now()
order by table_name.finishedon desc
可能根本不使用索引。
同理:
where column = 'value' and finshedon - interval 2 day >= now()
order by table_name.finishedon desc
也可能賺了指數用處不大,因爲威力join
和group by
。
索引是爲了使選擇查詢更快,但是在應用大型表上的索引之前,請不要忘記首先進行備份。 – 2014-10-29 11:32:31