我有一个日期时间字符串,我只需要脚本中的日期在我的数据库中执行一些搜索。目前,我脑子里有两种情况,但不知道哪一种更快。
第一个场景:
在MYSQL数据库中,我有两列:datetime (它是日期时间类型)和date (是日期类型)。
然后,在我的PHP脚本中,每次保存记录时,我都会将已知的字符串插入datetime字段,然后将其转换为适合date字段(我想的是:$date = date("Y-m-d", strtotime($datetime)))。
这样,所有必要的片段都存储在我的数据库中,我可以动态地检索它们( datetime和date字段)。
第二个场景:
MYSQL数据库应该只包含datetime列。
我的PHP脚本将将已知的字符串插入到datetime字段,而不进行任何其他修改。
当我检索我的数据时,我会做这样的事情:SELECT datetime, DATE(datetime) FROM ...
结论
这些场景中哪一种更快,因此应该使用?应该在保存或检索时创建日期格式吗?MYSQL在格式化日期上比PHP快吗?最好是将所有内容存储在数据库中并按原样检索,还是只存储检索上的最小值和格式?这些场景中的哪一种是最佳实践?
谢谢!
发布于 2011-08-16 11:40:10
这取决于你的用法:
如果您只需要阅读date,那么使用单个datetime列,从datetime到date的转换就足够便宜了。
如果要在给定日期(如WHERE date = '2011-08-01')选择行,则选择一个date列,因为这将允许mysql使用date列上的索引(如果添加了索引的话)。
如果要在日期范围内选择行,则选择datetime列。你可以做一些像WHERE datetime >= '2011-08-01' AND datetime < '2011-08-16'这样的事情。
发布于 2011-08-16 11:37:13
第二种是最佳和快速的,因为您是根据需求获得值的。而不是得到一些价值,然后再努力去做。
发布于 2011-08-16 11:44:01
国际水文学
对于范围filtering
。
https://stackoverflow.com/questions/7077543
复制相似问题