2014-10-29 65 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

相关问题