易截截图软件、单文件、免安装、纯绿色、仅160KB

oracle中in,not in和exists,not exists之间的区别

 
 
         一直听到的都是说尽量用exists不要用in,因为exists只判断存在而in需要对比值,所以exists比较快,但看了看网上的一些东西才发现根本不是这么回事。
下面这段是抄的
Select * from T1 where x in ( select y from T2 )
执行的过程相当于:
select *
  from t1, ( select distinct y from t2 ) t2
 where t1.x = t2.y;
select * from t1 where exists ( select null from t2 where y = x )
执行的过程相当于:
for x in ( select * from t1 )
   loop
      if ( exists ( select null from t2 where y = x.x )
      then
         OUTPUT THE RECORD
      end if
end loop
从我的角度来说,in的方式比较直观,exists则有些绕,而且in可以用于各种子查询,而exists好像只用于关联子查询(其他子查询当然也可以用,可惜没意义)。
由于exists是用loop的方式,所以,循环的次数对于exists影响最大,所以,外表要记录数少,内表就无所谓了,而in用的是hash join,所以内表如果小,整个查询的范围都会很小,如果内表很大,外表如果也很大就很慢了,这时候exists才真正的会快过in的方式。
         下面这段还是抄的
not in 和not exists
如果查询语句使用了not in 那么内外表都进行全表扫描,没有用到索引;
而not extsts 的子查询依然能用到表上的索引。
所以无论那个表大,用not exists都比not in要快。
          也就是说,in和exists需要具体情况具体分析,not in和not exists就不用分析了,尽量用not exists就好了。
下有一个表-电视剧  
  TvPlay(title,   year,   studioname,   男主角,   女主角),  
   
  查询出被重复拍摄1次以上的电视剧名,(如射雕,倚天屠龙)  
  select   title  
  from   TvPlay   tp  
  where   year   >  
            (select   year  
              from &nbs


相关文档:

oracle api小结

 前几个项目自己没有写过接口,都是负责前台的控制。来到这个项目上,才开始自己写,我是6月中旬开始做这个项目的,现在11月份,现在在去看6月份写的package,简直有点想吐了。原因有以下几点:
1. 简洁,扼要的说明没有附加。
2. n多功能综合到一起,全部放到一个包里,而不是根据功能模块划分。
3. 没有例外控制。 ......

oracle 启动管理器

 emctl start dbconsole 是10g的启动console服务的命令
将OEM服务停止emctl stop dbconsole
emctl start dbconsole启动EM console服务,使用前需要先设置ORACLE_SID环境变量
emctl stop dbconsole停止EM console服务,使用前需要先设置ORACLE_SID环境变量
关闭数据库后应该首先用sysdba登陆,这样就进入了sys模式. ......

oracle 中的minus

 minus运算
返回在第一个查询结果中与第二个查询结果不相同的那部分行记录。
有哪些工种在财会部中有,而在销售部中没有?
exp:selectjobfromaccount
minus
selectjobfromsales;
与union相反 ......

SQL和ORACLE函数比较

 
SQLServer和Oracle是大家经常用到的数据库,在此感谢作者总结出这些常用函数以供大家参考。
数学函数:
 1.绝对值
   S:SELECT abs(-1) value
   O:SELECT abs(-1) value from dual
2.取整(大)
   S:SELECT ceiling(-1.001) value
   O:SELECT ceil(-1.001) value from dual
3.取整(小) ......

Oracle SQL语句

ORDER BY 排序
 
ASC 升序(默认)
 DESC 降序
 
select * from s_emp order by dept_id , salary desc
部门号升序,工资降序
关键字distinct也会触发排序操作。
 
select * from employee order by 1; //按第一字段排序
NULL被认为无穷大。order by 可以跟别名。
 
select table_name ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号