我有一个DATETIME字符串,我只需要在我的脚本中使用DATE在我的数据库中执行一些搜索。目前,我脑子里有两个场景,但不知道哪个场景更快。
第一种情况:
在我的MYSQL数据库中,我有两列:datetime
(这是DATETIME类型)和date
(这是DATE类型)。
然后,在我的PHP脚本中,每次保存记录时,我都会将已知字符串插入datetime
字段,然后将其转换为适合date
字段(我在考虑类似于:$date = date("Y-m-d", strtotime($datetime))
)。
这样,所有必要的部分都存储在我的数据库中,我可以动态检索它们(datetime
和date
字段)。
第二种情况:
MYSQL数据库应仅包含datetime
列。
我的PHP脚本会将已知字符串插入datetime
字段而不做任何其他修改。
当我检索我的数据时,我会做类似的事情:SELECT datetime, DATE(datetime) FROM ...
结论
哪些方案更快,因此应该使用?日期格式应该在保存还是检索时进行?在格式化日期,MYSQL比PHP快吗?是否更好地将所有内容存储在数据库中并按原样检索,或者仅在检索时存储最小值和格式?哪种情况是最佳做法?
谢谢!
答案 0 :(得分:2)
这取决于您的用例:
如果您只需要date
进行阅读,那么请使用一个datetime
列,从datetime
转换为date
已足够便宜。
如果要在给定日期选择行(如WHERE date = '2011-08-01'
),则转到date
列,因为这将允许mysql使用date
上的索引列,如果您已添加一个。
如果您要选择日期范围内的行,请转到datetime
列。你可以做WHERE datetime >= '2011-08-01' AND datetime < '2011-08-16'
之类的事情。
答案 1 :(得分:1)
第二个是最好和最快的,因为您根据要求获得了价值。而是获得一些价值并在以后继续努力。
答案 2 :(得分:1)
IMHO
答案 3 :(得分:1)
绝对取决于你的情况 - 如果你要阅读(很多)而不是写作,你可以存储两者。但我会去存储一个字段(日期时间)并将其转换为PHP或从MySQL中检索它(将datetime转换为您喜欢的格式的字符)