知识大全 Oracle的in和not in(图)

Posted 语句

篇首语:天不生无用之人,地不长无名之草。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 Oracle的in和not in(图)相关的知识,希望对你有一定的参考价值。

Oracle的in和not in(图)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  在很多软件系统中 系统的性能很打程度上有数据库的性能决定 以前也曾经做过很多次关于性能方面的各种测试 特别是关于oracle的 我想到也应该记录下来一部分 为大家共享     事情发生在我们的系统从sqlserver移植到oracle 用户在一个查询的操作上等待的时间无法忍受了 我们关于这个查询的处理与原来的方式一下 难道sqlserver 同oracle有什么地方不一样么 让我们来看看oracle有什么地方有问题 或者是我们使用的有问题?    业务问题大概可以这样描述 一个父表 一个子表 查询的结果是找到子表中没有使用父表id的记录 这种情况估计很多系统都会牵涉得到 让我们来举一个例子      >  父表存储父亲 子表存储孩子 然后通过pid和父表关联 查询需要的结果是找到尚未有孩子的父亲     我们来看一下查询语句的写法     select * from parent where id not in (select pid from childen)    这种标准的写法在子表存在 万条的记录的时候 查询时间超过了 秒 远远大于原来的sql server服务器的一秒 我在解决的时候想到了一个方法     select * from parent where id in    ( select id from parent minus select pid from childen )    正常理解下 这个语句应该更加费时 但是事实完全出乎意料 这条语句不仅仅在子表存在大量记录的情况下速度良好 在子表少量数据的情况下速度也非常的好 基本在 秒内完成     这个结果可以很明显的证明oracle 在子查询的内部处理的时候 使用 in 和 not in 的巨大区别 希望用到这种方式的用户注意 也期待有人解释其中的问题     附录 测试数据的语句     create parent table  drop table parent;  create table parent(id varchar( ) name varchar( ) primary key (id) );     create childen table  drop table childen;  create table childen(id varchar( ) pid varchar( ) name varchar( ) primary key (id) );   Create/Recreate primary unique and foreign key constraints  alter table CHILDEN  add constraint fk_ foreign key (PID)  references parent (ID);     add test date for parent   Created on by GUIP  declare   Local variables here  i integer;  begin   Test statements here  i := ;  delete from parent;  loop  i := i + ;  dbms_output put_line(i);  insert into parent(id name) values(i name || i);  if (i mod = ) then  mit;  end if;  exit when i > ;  end loop;  mit;  end;     add test date for childen   Created on by GUIP  declare   Local variables here  i integer;  j integer;  begin   Test statements here  i := ;  delete from childen ;  loop  j := ;  loop  i := i + ;  j := j + ;  insert into childen(id pid name) values(i j name || j);  if (i mod = ) then  mit;  end if;  exit when j>= ;  end loop;    exit when i >= * ;  end loop;  mit;  end; cha138/Article/program/Oracle/201311/17959

相关参考

知识大全 recover database in time point

  SQL>startup  ORACLE例程已经启动    TotalSystemGlobalArea bytes  FixedSize         bytes  VariableSize

知识大全 从数据结构的角度分析 for each in 比 for in 快的多

今天仔细琢磨了会从数据结构的角度分析了下觉得forin和foreachin效率上有着本质的区别无论是JS还是AS   之前听说火狐的JS引擎支持foreachin的语法例如下述的代码复制代码

知识大全 in general和generally区别

ingeneral和generally区别ingeneral一般,大体上Ingeneral,peoplelikeher人们一般都喜欢她generallyadv.一般地generallyspeaking

知识大全 如何优化in操作

今天开发人员让我优化一个sql

知识大全 Fly,fly in the sky.这首歌的英文歌词和中文翻译

Fly,flyinthesky.这首歌的英文歌词和中文翻译  以下文字资料是由(本站网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下

知识大全 in lack of的用法

inlackof的用法inlackof[释义]缺乏用法这里的lack是抽象名词,因此,inlackof这个短语成立,比如:Amaninlackofself-confidenceseizesnochan

知识大全 从Firefox访问Java Plug-in

从Firefox访问JavaPlug-in  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 

知识大全 安卓手机什么修图软件好

安卓手机什么修图软件好我推荐Picsart,PSTouch,pixlr,snapseed和MIX滤镜大师。你想要简单一点的,我推荐玩图,天天P图,照片工坊,相机360,美妆相机,潮自拍,in和Face

知识大全 在ASP.NET中使用SQL的IN操作

在ASP.NET中使用SQL的IN操作  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  这篇文章将

知识大全 increase in revenue是什么意思

increaseinrevenue是什么意思increaseinrevenue增加的收入revenue英[ˈrevənju:]美[ˈrevənu:]n.收益;财政收入;税收收入;[例句]Revenue