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

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


相关文档:

如何修改Oracle默认用户密码有效期时间

如何修改Oracle默认用户密码有效期时间
1、查看用户的proifle是哪个,一般是default:
     sql>SELECT username,PROFILE from dba_users;
2、查看指定概要文件(如default)的密码有效期设置:
     sql>  SELECT * from dba_profiles s WHERE 
   ......

oracle常见语句

----本用户所拥有的系统权限:
select * from user_sys_privs;
---本用户读取其他用户对象的权限:
 select * from user_tab_privs;
-----添加权限
GRANT CREATE USER,DROP  USER,ALTER USER ,CREATE ANY VIEW ,
DROP ANY  VIEW,EXP_FULL_DATABASE,IMP_FULL_DATABASE,
DBA,CONNECT,RESOURCE,CREATE&nbs ......

Oracle中查询表的大小和表空间的大小

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/cosio/archive/2009/03/11/3978747.aspx
有两种含义的表大小。一种是分配给一个表的物理空间数量,而不管空间是否被使用。可以这样查询获得字节数:
select segment_name, bytes
from user_segments
where segment_type = 'TABLE';
或者
   Sel ......

oracle调用java

create or replace and compile java source named md5util as
import java.security.MessageDigest;
public class MD5Util
{
  public static String encrypt(String s)
  {
       char hexDigits[] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', ......

oracle游标

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 ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号