我通常使用datetime字段来存储创建时间更新的应用程序数据时间.
但现在我遇到了一个数据库表,他们在表中保存了日期和时间字段.
Elw*_*win 31
在DATETIME字段上方使用DATE字段时,性能存在巨大差异.我有一个包含超过4.000.000条记录的表格,为了测试目的,我添加了两个带有自己索引的字段.一个使用DATETIME,另一个使用DATE.
我禁用了MySQL查询缓存,以便能够正确测试并循环查询1000x的同一查询:
SELECT * FROM `logs` WHERE `dt` BETWEEN '2015-04-01' AND '2015-05-01' LIMIT 10000,10;
DATETIME INDEX:197.564秒.
SELECT * FROM `logs` WHERE `d` BETWEEN '2015-04-01' AND '2015-05-01' LIMIT 10000,10;
日期指数:107.577秒.
使用日期索引字段的性能提升为:45.55%!!
所以我想说如果你期望你的表中有很多数据,请考虑用他们自己的索引将日期与时间分开.
Gor*_*off 25
我倾向于认为将日期和时间存储在单独的字段中基本没有优势.MySQL提供了非常方便的函数来提取值的日期和时间部分datetime.
好的.可能存在一些效率原因.在MySQL中,您可以在字段上放置单独的索引.因此,例如,如果要搜索特定时间,那么按一天中的小时数计算的查询(例如)可以使用该time字段上的索引.datetime在这种情况下,不会使用字段的索引.单独的date字段可能会更容易编写将使用date索引的查询,但严格来说,a datetime也应该有效.
我曾经看到过单独存储日期和时间的一次是在交易系统中.在这种情况下,交易具有估值日期.评估时间类似于"纽约开放"或"伦敦收盘" - 这不是实时价值.它描述了用于估价的时间.
| 归档时间: |
|
| 查看次数: |
23393 次 |
| 最近记录: |