在mysql中查询范围的最佳方法

时间:2011-06-14 15:04:36

标签: mysql sql range

我正在设计一个查询,它根据表示为范围(特别是年)的参数从大表中提取行。在某些情况下,我会根据3个特定值来拉行(例如,拉客户记录,其中客户编号为#001,#002和#003)。

对于范围问题,我想知道WHERE语句后面的条件语法是否比其他语句更快:

在()

()之间

high.range> = data> = low.range

对于IN()选项,我可以编写一个脚本,将年份转换为从low.range到high.range的年份列表。因此,在2000年至2004年的范围内,它将是IN('2000','2001','2002','2003','2004')。这将是MySQL之外的额外编程步骤,但对我来说并不难。

我意识到我还可以采取其他措施来加快速度(比如使用聚簇索引),但我只是想看看在WHERE语句之后使用哪种sql语法有什么不同。

2 个答案:

答案 0 :(得分:0)

编辑:对不起,我可能误解了你的问题。

我认为between在这种情况下是in更合适的功能,但我要确定一些基准测试。


如果您使用的是TIMESTAMP,DATE或DATETIME列,则可以使用year

where year(column) > 2000 or year(column) < 2005

还有monthweekday功能。

http://dev.mysql.com/doc/refman/5.1/en/datetime.html

答案 1 :(得分:0)

幕后工作就像high.range&gt; = data&gt; = low.range

在(condition1,condition2,condition3)中工作就像(condition1或condition2或condition3)

如果日期数大于1或2,我希望两者之间的工作更快。

类似(1000> 1001)与(1000 = 998或1000 = 996或1000 = 995等)。

相关问题