注册 登录
编程论坛 SQL Server论坛

一个查询效率问题!

qazwsx123456 发布于 2007-10-11 11:52, 663 次点击
select s#,sname
from s
where s# in (select s#
from sc
where c#='c2');

select s#,sname
from s
where exists(select *
from sc
where sc.s#=s.s# and c#='c2');
各位帮忙比较一下这两种查询的区别?
那个效率更高?为什么?
6 回复
#2
心中有剑2007-10-11 13:29
select s.s#,sname from s,sc where s.s#=sc.s# and sc.c#='c2'
这样不就好了吗?
为什么你那样写呢?
#3
缘吇弹2007-10-11 13:58
那可能是LZ的编程风格.
#4
purana2007-10-11 14:38
我觉得使用in效率高于使用exists
不知对否.
#5
sky_yang_sky2007-10-11 15:46

一般IN比EXISTs快一些,但是not exists要比not in快得多

#6
心中有剑2007-10-11 16:37
如果要用到的not exists或not in 那么我宁可去建临时表了
#7
qazwsx1234562007-10-11 17:22

感谢大家的支持!我觉得用第一种是先对sc表做了一次筛选!所以效率更高一些!
第二种方法的原理就不太清楚了!有那位能帮忙写一下它的关系演算表达式啊?

1