选择字段大于某个日期的行的最快方法是什么?
WHERE date > FROM_UNIXTIME(12345)
或
WHERE UNIX_TIMESTAMP(date) > 12345
或
WHERE date > '2011-05-01 09:00:00'
答案 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)