MySQL性能DATE_FORMAT()vs YEAR()和MONTH()

时间:2016-05-18 13:49:09

标签: mysql database performance

在当前月份和年份中查找时间戳时哪个性能更好?

SELECT *
FROM mytable
WHERE YEAR(CURRENT_TIMESTAMP) = YEAR(mytable.timestamp)
  AND MONTH(CURRENT_TIMESTAMP) = MONTH(mytable.timestamp)

OR

SELECT *
FROM mytable
WHERE DATE_FORMAT(CURRENT_TIMESTAMP,'%m-%Y') = DATE_FORMAT(mytable.timestamp,'%m-%Y')

1 个答案:

答案 0 :(得分:3)

为了获得更好的性能并且能够在mytable.timestamp中使用索引,请将当前日期截断为月份。

 SELECT DATE_FORMAT(CURRENT_TIMESTAMP, '%Y-%m-01')

这会创建一个常量值,您可以索引搜索它。

然后你可以从本月获得所有记录

SELECT *
FROM mytable
WHERE mytable.timestamp >= DATE_FORMAT(CURRENT_TIMESTAMP, '%Y-%m-01')