Oracle select in/exists/not in/not exits
	
    
    
	in 是把外表和内表作hash 连接,而exists是对外表作loop循环,每次loop循环再对内表进行查询。   
一直以来认为exists比in效率高的说法是不准确的。    
如果查询的两个表大小相当,那么用in和exists差别不大。    
in 是把外表和内表作hash 连接,而exists是对外表作loop循环,每次loop循环再对内表进行查询。    
一直以来认为exists比in效率高的说法是不准确的。    
如果查询的两个表大小相当,那么用in和exists差别不大。   如果两个表中一个较小,一个是大表,则子查询表大的用exists,子查询表小的用in:   例如:表A(小表),表B(大表)   
1:    
select * from A where cc in (select cc from B)     
效率低,用到了A表上cc列的索引;    
select * from A where exists(select cc from B where cc=A.cc)     
效率高,用到了B表上cc列的索引。    
相反的    
2:    
select * from B where cc in (select cc from A)     
效率高,用到了B表上cc列的索引;    
select * from B where exists(select cc from A where cc=B.cc)     
效率低,用到了A表上cc列的索引。    
not in 和not exists    
如果查询语句使用了not in 那么内外表都进行全表扫描,没有用到索引;    
而not extsts 的子查询依然能用到表上的索引。    
所以无论那个表大,用not exists都比not in要快。   in 与 =的区别   select name from student where name in ('zhang','wang','li','zhao');   与   select name from student where name='zhang' or name='li' or name='wang' or name='zhao'   的结果是相同的。   
-----------------------------------------------------------------实例    
--登陆gather/123456@pc150 执行以下语句,注意执行时间    
---小表    
er_street_code    
select distinct tt.gkdm from er_street_code tt where tt.gkdm is not null    
---大表    
er_in_detail,er_reck_detail   ---例1   
select * from er_reck_detail t1 where t1.gkdm in (select gg.gkdm from er_street_code gg)   select * from er_reck_detail t1 where exists (select * from er_street_code gg where t1.gkdm=gg.gkdm)   ---例2   
select * from er_street_code aa where aa.gkdm in (select mm.gkdm from er_reck_detail mm)   select * from er_street_code aa where exists (select * from er_reck_detail
    
     
	
	
    
    
	相关文档:
        
    
    本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/cosio/archive/2009/03/11/3978747.aspx
有两种含义的表大小。一种是分配给一个表的物理空间数量,而不管空间是否被使用。可以这样查询获得字节数:
select segment_name, bytes 
from user_segments 
where segment_type = 'TABLE'; 
或者
   Sel ......
	
    
        
    
    1,segments 的分类
       l   
        数据段
l         
索引段
l         
临时段
l         
回退 ......
	
    
        
    
    drop table tmp_lzw_3283_tar;
create table tmp_lzw_3283_tar
(
    servnumber varchar2(11)
)
;
load data
infile 'tar_3283.txt'
insert into table tmp_lzw_3283_tar
fields terminated by '|'
(
servnumber
)
/*
select count(*),count(distinct servnumber) from tmp_lzw_3283_ta ......
	
    
        
    
    利用oracle审计功能来监测试环境的变化
         做过测试的人都应该会碰到这样的情况:测试发现的bug在开发机器上没有出现,显然这是环境差异的原因。相当多情况下,因为测试使用的数据库结构和开发使用的数据库结构不一致造成的。尤其是一些公司在提交测试版本的时候,注重应用 ......