这包括两个问题:
MySQL的时间戳字段是否真的比“order by”查询中的datetime字段快?
如果对上述问题的回答是肯定的,那么它的速度会快多少?假设在一个包含1亿行的表中并经常根据MySQL内部的时间戳字段对100-200k行进行排序,是否可以通过在外部程序中将时间戳转换为可读的字符串格式来实现排序时间的改进?
答案 0 :(得分:11)
最简单的方法是编写一个单元测试,并实际得到一些数字。
我的理论是时间戳会更快,但根据这篇博客,我错了: http://dbscience.blogspot.com/2008/08/can-timestamp-be-slower-than-datetime.html
这就是为什么在我决定优化的地方之前,我倾向于通过剖析得到数字,因为我的直觉有时会非常错误。
因此,它可能取决于您使用的MySQL版本,但似乎日期时间可能更快。
答案 1 :(得分:3)
据我所知,使用TIMESTAMP而不是DATETIME的主要好处是能够自动将值设置为行创建时的当前时间,并能够将其设置为当前时间(或者只需稍加努力的另一列)行更新时间。这允许自动创建和修改日期。
由于TIMESTAMP列的其他限制(例如,不接受某个范围之外的日期或在服务器时区更改时更改),如果您不需要其中一个,DATETIME将更可取上面的两个特征。
但是,如果您只是想在数据库中存储Unix时间戳并且不需要数据库来转换它,那么您可以将其直接存储为无符号整数并略微提高性能。