2014-10-29 60 views
0

將索引添加到具有數百萬行的表的datetime類型的列是否安全? 如果查詢的datetime列在where子句中,如 where finishedon >=DATE_SUB(NOW(), INTERVAL 2 DAY) order by table_name.finishedon desc;將mysql索引到日期時間類型的列

hereon是一個日期時間格式的列。

+1

索引是爲了使選擇查詢更快,但是在應用大型表上的索引之前,請不要忘記首先進行備份。 – 2014-10-29 11:32:31

回答

1

如果您指定的查詢有索引,請選擇快速,請注意,如果DATETIME的類型轉換已完成,那麼將不會使用索引,但在這種情況下它很好。

請使用InnoDB引擎,如果更新和插入是在這樣一個大的數據庫頻繁,以提高性能,防止表級鎖更流暢的選擇

1

對於此查詢:

select table_name.* 
from table_name 
where finishedon >= DATE_SUB(NOW(), INTERVAL 2 DAY) 
order by table_name.finishedon desc; 

那麼你的指數將幫助對於whereorder 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 

也可能賺了指數用處不大,因爲威力joingroup by

相關問題