select a.col1,a.col2 from temp1 a where not exists (select 'X' from temp2 b where b.col2 = a.col1);select 'X' 可以理解成存在(exists)不存在(not exists)的含义.如上面   找到a表中  col1的字段值不与b表中col2字段值相等的数据从效率来看:1) select * from T1 where exists(select 1 from T2 where T1.a=T…
博文来源(oracle中的exists 和not exists 用法):http://chenshuai365-163-com.iteye.com/blog/1003247 博文来源(  in与exists语句的效率问题):http://www.cnblogs.com/iceword/archive/2011/02/15/1955337.html (一) exists (sql 返回结果集为真) not exists (sql 不返回结果集为真) 如下: 表A ID NAME 1    A1 2…
oracle中的 exists 和 in 的效率问题 --------------------------------------------------------------- +++++++++++++  转载  +++++++++++++++++++ --------------------------------------------------------------- 有两个简单例子,以说明 “exists”和“in”的效率问题 1) select * from T1 where…
1. sybase与oracle中insert into select和select into的用法 http://wjlvivid.iteye.com/blog/1921679 Sybase 一.首先,我们来看一下insert into select语句 其语法形式为:Insert into Table2(field1,field2,...) select value1,value2,... from Table1. 这里的要求就是Table2必须已经存在,如果不存在,系统则会提示对象无效.…
有两个简单例子,以说明 “exists”和“in”的效率问题 1) select * from T1 where exists(select 1 from T2 where T1.a=T2.a) ; T1数据量小而T2数据量非常大时,T1<<T2 时,1) 的查询效率高. 2) select * from T1 where T1.a in (select T2.a from T2) ; T1数据量非常大而T2数据量小时,T1>>T2 时,2) 的查询效率高. exists 用法:…
有两个简单例子,以说明 “exists”和“in”的效率问题 1) select * from T1 where exists(select 1 from T2 where T1.a=T2.a) ; T1数据量小而T2数据量非常大时,T1<<T2 时,1) 的查询效率高. 2) select * from T1 where T1.a in (select T2.a from T2) ; T1数据量非常大而T2数据量小时,T1>>T2 时,2) 的查询效率高. exists 用法:…
有两个简单例子,以说明 “exists”和“in”的效率问题 1) select * from T1 where exists(select 1 from T2 where T1.a=T2.a) ; T1数据量小而T2数据量非常大时,T1<<T2 时,1) 的查询效率高. 2) select * from T1 where T1.a in (select T2.a from T2) ; T1数据量非常大而T2数据量小时,T1>>T2 时,2) 的查询效率高. exists 用法:…
以前一直不知道exists和in的用法与效率,这次的项目中需要用到,所以自己研究了一下.下面是我举两个例子说明两者之间的效率问题. 前言概述: “exists”和“in”的效率问题,涉及到效率问题也就是sql优化: 1.若子查询结果集比较小,优先使用in. 2.若外层查询比子查询小,优先使用exists.原理是:若匹配到结果,则退出内部查询并将条件标志为true,传回全部结果资料 因为若用in,则oracle会优先查询子查询,然后匹配外层查询,原理是:in不管匹配到匹配不到都全部匹配完毕,匹配相…
in 是把外表和内表作hash 连接,而exists是对外表作loop循环,每次loop循环再对内表进行查询. not exists:做NL,对子查询先查,有个虚表,有确定值,所以就算子查询有NULL最终也有值返回 not in:做hash,对子查询表建立内存数组,用外表匹配,那子查询要是有NULL那外表没的匹配最终无值返回.     一直以来认为exists比in效率高的说法是不准确的.   如果查询的两个表大小相当,那么用in和exists差别不大.  如果两个表中一个较小,一个是大表,则子…
1) select * from T1 where exists(select * from T2 where T1.a=T2.a) ; T1数据量小而T2数据量非常大时,T1<<T2 时,1) 的查询效率高. 2) select * from T1 where T1.a in (select T2.a from T2) ; T1数据量非常大而T2数据量小时,T1>>T2 时,2) 的查询效率高. in 是把外表和内表作hash 连接,而exists是对外表作loop循环,每次lo…