在当前月份和年份中查找时间戳时哪个性能更好?
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')
答案 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')