sql2005语句中in、like、=、exist四个的节省资源方面比较

都说exist最为节省资源,但exists的组合也必须用到=或in各位有成功案例的能否详细说明怎么改,使得select*fromwhere(工作单号='12334454'... 都说exist最为节省资源,但exists 的组合也必须用到=或in
各位有成功案例的能否详细说明怎么改,使得
select * from where(工作单号='12334454')等的条件查询变成exist语句最为省资源,究竟in、like、=、exist相互改,哪种方式最省资源省内存,改的例子如何,哪位可以详细讲解下,91193@sohu.com
展开
 我来答
zhuhaoyue
2009-11-28 · TA获得超过1806个赞
知道小有建树答主
回答量:2293
采纳率:50%
帮助的人:1155万
展开全部
我记得你昨天好像也问过,我当时就说能用EXISTS尽量用EXISTS了
其实既然用EXISTS很少会用到IN的,否则就是画蛇添足了。
你的这个例子没有价值,本来就没有用到IN。
我给你个例子吧,
假设有三个表
学生S(S#,SNAME,AGE,SEX)
学习SC(S#,C#,GRADE)
课程C(C#,CNAME,TEACHER)
现在要检索WANG同学未学的课程的课程号。
分别有两种方法能完成查询(in,exists)
方法一:
Select c#
From C
Where c# not in (select c#
From sc,s
Where s.name=’wang’and s.s#=sc.s#)
方法二:
Select c#
From c
Where not exists(select *
From s,sc
Where s.s#=sc.s# and sc.c#=c.c# and sname=’wang’)
在这个查询中可能速度差别不大,但是实际中如果数据量大的话,能用EXISTS那就尽量用EXISTS,因为嵌套在IN内的的SQL语句返回的是具体结果,而EXISTS只返回[是]还是[否],一般速度比IN快很多
另外,like就不要和它们做比较了,根本就不是一件事情,功能不同的。
IN的本质是N个等于,中间用OR连起来,效率和IN是一样的,如果你不嫌烦的话,你甚至可以把IN里面的几百件个结果用几百上千个等于号连起来,查询效率是一样的,只不过,可能到下班你那句SQL还没有写完吧。
dinggx
2009-11-28 · TA获得超过420个赞
知道小有建树答主
回答量:417
采纳率:0%
帮助的人:391万
展开全部
in与exists的区别:http://hi.baidu.com/dinguangx/blog/item/2c4d0213cbe9b72bdc5401a7.html
in与exitsts一般是不能用=或者like替代的,最重要的是要搞明白in与exists的关系
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式