读书人

好多or有办法用别的语句代替吗

发布时间: 2012-06-14 16:00:31 作者: rapoo

各位高手,好多or,有办法用别的语句代替吗?
where f1 = 10 or f1= 20 or f1= 15 or f1=26 or f1 = 8 or f1 = 36 。。。。。

各位高手,有没有好办法代替这种写法?用in不错,但是这个sql 的in好像不是用来解决这个问题的

[解决办法]
IN,UNION ALL
[解决办法]
where f1 = 10 or f1= 20 or f1= 15 or f1=26 or f1 = 8 or f1 = 36
改成
where f1 in(10,20,15,26,8,36)
[解决办法]
IN和OR的执行计划是相同的
[解决办法]

SQL code
declare @filter table (id int)insert into @filterselect 10 unionselect 20 unionselect 15 unionselect 26 unionselect 8 unionselect 36select ...from ..where exists (select 1 from @filter where id = f1)
[解决办法]
in 的本质就是or其实如果你的条件比较固定,可以把它存放到一个表,然后进行关联。但是注明一句,如果in里面的数量超过一定程度,目前我测试的是10000个左右,就会报错,无法执行,因为编译的代价太高。就算服务器很强大(26个虚拟cpu,40G内存,也是无法执行)。所以要慎重。

读书人网 >SQL Server

热点推荐