oracle中exist与in的区别

oracle中exist与in的区别

ID:34724914

大小:82.68 KB

页数:4页

时间:2019-03-10

oracle中exist与in的区别_第1页
oracle中exist与in的区别_第2页
oracle中exist与in的区别_第3页
oracle中exist与in的区别_第4页
资源描述:

《oracle中exist与in的区别》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、在OracleSQL中取数据时有时要用到in和exists那么他们有什么区别呢?1性能上的比较比如Select*fromT1wherexin(selectyfromT2)执行的过程相当于:select* fromt1,(selectdistinctyfromt2)t2 wheret1.x=t2.y;相对的select*fromt1whereexists(selectnullfromt2wherey=x)执行的过程相当于:forxin(select*fromt1)  loop     if(exists(selectnullfromt

2、2wherey=x.x)     then        OUTPUTTHERECORD     endifendloop表 T1不可避免的要被完全扫描一遍分别适用在什么情况?以子查询 (selectyfromT2)为考虑方向如果子查询的结果集很大需要消耗很多时间,但是T1比较小执行(selectnullfromt2wherey=x.x)非常快,那么exists就比较适合用在这里相对应得子查询的结果集比较小的时候就应该使用in.2含义上的比较在标准的scott/tiger用户下EMPNOENAMEJOBMGRHIREDATESALC

3、OMMDEPTNO17499ALLENSALESMAN76981981/02/201600.00300.003027521WARDSALESMAN76981981/02/221250.00500.003037566JONESMANAGER78391981/04/022975.002047654MARTINSALESMAN76981981/09/281250.001400.003057698BLAKEMANAGER78391981/05/012850.003067782CLARKMANAGER78391981/06/092450.00

4、1077788SCOTTANALYST75661987/04/193000.002087839KINGPRESIDENT 1981/11/175000.001097844TURNERSALESMAN76981981/09/081500.000.0030107876ADAMSCLERK77881987/05/231100.0020117900JAMESCLERK76981981/12/03950.0030127902FORDANALYST75661981/12/033000.0020137934MILLERCLERK77821982/

5、01/231300.00 10执行SQL>selectcount(*)fromempwhereempnonotin(selectmgrfromemp);COUNT(*)----------        0SQL>selectcount(*)fromempT1 2 wherenotexists(selectnullfromempT2wheret2.mgr=t1.empno);--这里子查询中取出null并没有什么特殊作用,只是表示取什么都一样。COUNT(*)----------        8结果明显不同,问题就出在MGR=nu

6、ll的那条数据上。任何值Xnotin(null) 结果都不成立。用一个小例子试验一下:select*fromdualwheredummynotin(NULL)--norowsselectedselect*fromdualwhereNOT(dummynotin(NULL))--norowsselected知觉上这两句SQL总有一句会取出数据的,但是实际上都没有。SQL中逻辑表达式的值可以有三种结果(truefalsenull)而null相当于false.

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。