比较日期的最快方法:UNIX_TIMESTAMP或FROM_UNIXTIME或字符串

时间:2015-12-19 17:42:52

标签: mysql datetime

选择字段大于某个日期的行的最快方法是什么?

WHERE date > FROM_UNIXTIME(12345)

WHERE UNIX_TIMESTAMP(date) > 12345

WHERE date > '2011-05-01 09:00:00'

1 个答案:

答案 0 :(得分:4)

最慢的是:

WHERE UNIX_TIMESTAMP(date) > 12345

因为必须每次为每一行调用unix_timestamp函数,并且不会使用日期列上的索引(如果存在)。其他几乎相同:

WHERE date > FROM_UNIXTIME(12345)
WHERE date > '2011-05-01 09:00:00'

函数from_unixtime只会调用一次,即使字符串只会解析一次,也不会有任何区别,但我更喜欢最后一个,因为它更具可读性。

当然,不要忘记为日期列编制索引:

alter table tablename add index idx_date (date)