已知以下SQL语句将选择一个数据范围,哪一个是其中一个最有效的数据范围,并且使用timestamp
或datetime
将改变性能
假设我们有桌子
test
列timestamp
,datatime
我想提取2015年5月的所有记录:
WHERE DATE_FORMAT(timestamp,'%Y-%m') = '2015-05'
WHERE timestamp BETWEEN '2015-01-01' AND '2015-01-31'
WHERE timestamp >= '2015-01-01' AND timestamp <= '2015-01-31'
WHERE YEAR(timestamp) = 2015 AND MONTH(timestamp) = 5
我应该避免哪种,哪种是最佳做法
答案 0 :(得分:1)
这几乎是一个主观问题,因为它实际上取决于您在表格和列上的索引。
如果你的列上有索引,那么你可以使用这两个中的任何一个
WHERE timestamp BETWEEN '2015-01-01' AND '2015-01-31'
WHERE timestamp > '2015-01-01' AND timestamp < '2015-01-31'
这两者都可以利用索引并执行更快的速度
关于这两者中哪一个会更快地执行,我不认为存在差异。我的偏好是使用BETWEEN
,因为在阅读查询时我更有意义。选择一个并坚持下去。一致性是关键