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

oracle中实现递归查询的SQL(connect by prior)

    前段时间做了一个虚拟组织的创建。这个虚拟组织的创建是从现有的组织中读取数据然后进行分析保存到虚拟组织表中。保存之后写日志方便同步到其它系统中。公司使用的主要技术是SSH。由于是新人没有什么经验,加之时间比较紧迫,最后使用一般的逻辑思想通过递归在hibernate下顺利创建了。可是从现有的组织中读取10多万条的记录,然后逐条分析,保存,在写日志记录,在为每个应用写下发队列结果性能非常低。我们的系统中的数据要下发到300多个应用系统,也就是说读取10多万条记录就要分析十多万次,然后逐条写3000多万条记录,效率可想而知了。后来使用多线程来实行同步,可是保存的过程依然用十几分钟。这个过程是不能让人接受的。
    之后优化性能的工作转到了我导师的手中。我导师的职位是系统架构师,年近四十,可以说是java元老级人物了。两天之后果然传出振奋人心的消息。保存工作从原来的耗时10多分钟变成了半分钟。真是大喜啊!
    今早来上班,第一件事就是看看是什么实现的。第一就是不使用公司封装好的数据库连接,不适用HQL而是sql批量保存。这个当然能提高很大的性能了。也佩服导师之花了两天的时间把我十天的写出来的逻辑重新整理了一遍,真是不简单啊!最后看到一条SQL如下:select * from  um_org_organization_info start with ouguid=? connect by prior ouguid=parentouguid。开始觉得很疑惑,以我之前所学习的SQ知识,不曾看见过start with ...connect by prior,疑惑之际上网看看。得知“Start with...Connect By prior 子句递归查询一般用于一个表维护树形结构的应用" 。终于大悟了。高手就是不一样,经验多见识广啊。今天又学了新知识了。嘿嘿!


相关文档:

oracle 表空间操作

oracle表空间操作详解
  1
  2
  3作者:   来源:    更新日期:2006-01-04 
  5
  6 
  7建立表空间
  8
  9CREATE TABLESPACE data01
 10DATAFILE '/ora ......

Oracle 触发器

 
create table emp2_log(
 uname varchar2(20),
 action varchar(10),
 atime date
);
create or replace trigger trig
   after insert or delete or update on emp2 for each row  //绑在一张表上,before after 都可
以,before是 插数据之前,after是之后
begin
 &nb ......

SQL语句

1. 说明:复制表(只复制结构,源表名:a,新表名:b)
SQL: select * into b from a where 1<>1;
        2. 说明:拷贝表(拷贝数据,源表名:a,目标表名:b)
SQL: insert into b(a, b, c) select d, e, f from b;
        3. 说明: ......

sql 查询重复记录2


========第一篇=========
在一张表中某个字段下面有重复记录,有很多方法,但是有一个方法,是比较高效的,如下语句:
select data_guid from adam_entity_datas a where a.rowid > (select min(b.rowid) from adam_entity_datas b where b.data_guid = a.data_guid)
如果表中有大量数据,但是重复数据比较少,那么 ......

ORACLE SQL执行步骤

 ORACLE sql 的处理过程大致如下:
 1.运用HASH算法,得到一个HASH值,这个值可以通过V$SQLAREA.HASH_VALUE 查看
 2.到shared pool 中的 library cache 中查找是否有相同的HASH值,如果存在,则无需硬解析,进行软解析
 3.如果shared pool不存在此HASH值,则进行语法检查,查看是否有语法错误
&nbs ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号