我正在设计一个查询,它根据表示为范围(特别是年)的参数从大表中提取行。在某些情况下,我会根据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语法有什么不同。
答案 0 :(得分:0)
编辑:对不起,我可能误解了你的问题。
我认为between
在这种情况下是in
更合适的功能,但我要确定一些基准测试。
如果您使用的是TIMESTAMP,DATE或DATETIME列,则可以使用year
:
where year(column) > 2000 or year(column) < 2005
还有month
,week
和day
功能。
答案 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等)。