2015-06-04 134 views
0

知道,下面的SQL语句将选择的数据范围,其中之一是其他人中最有效的一个,而不要使用timestampdatetime将改变性能MySQL的日期范围选择

假设我们有表 testtimestamp列,datatime 我想提取五月的所有记录,2015年:

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

为什么不把它们插入MySQL Workbench并查看每个性能?听起来就像你在问别人为你做那样。 – ragerory

+0

首先,我不知道MySQL工作台是否存在,我只是想知道它们是否都以相同的方式工作 如果您不知道它们的工作原理是否相同,或者如果他们不请让其他人回答 –

+1

@ragerory这个问题不仅包括执行它们以查看哪个执行得更快......还有更多因素 –

回答

1

这几乎是一个主观问题,因为它实际上取决于你在表和列上的索引。

如果你有你的列索引,那么你可以使用这两个

WHERE timestamp BETWEEN '2015-01-01' AND '2015-01-31' 
WHERE timestamp > '2015-01-01' AND timestamp < '2015-01-31' 

这两个都可以利用索引,并执行更快

哪个这两个会执行得更快,我不认为有什么区别。我的首选是使用BETWEEN,因为在阅读查询时对我更有意义。挑一个并坚持下去。一致性是关键