当前位置:七道奇文章资讯数据防范Oracle防范
日期:2011-01-25 22:55:00  来源:本站整理

<b>如安在Oracle数据库中联合异构数据-开辟技术</b>[Oracle防范]

赞助商链接



  本文“<b>如安在Oracle数据库中联合异构数据-开辟技术</b>[Oracle防范]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:

    假如你有两个数据根源,如平面文件或表数据,并且要将他们归并在一同,你将怎么做?假如他们有一个共同的属性,如客户ID,那么该办理筹划应当是很明显:归并相关的属性,在这个例子中,只需归并客户ID就够了.假如没有任何共同之处该怎么办呢?唯一的要求就是,将数据源1中的记录和数据源2中的记录举行匹配 .并且,那个记录去和另一个记录匹配并没有关系,那么问题是,一个数据源中的每一个记录若何得到从其他数据源记录的标志.

    上述问题可以被描写为向一个数据库中加入了差别的或看似无关的数据.在先前的文章的文章中,触及若何利用ROWNUM在无关的数据之间创造接洽.该归并办法的本质是操纵甲骨文供应虚拟数据列来成立接洽.下面的查询可以用来作为CREATE TABLE AS SELECT声明的一部份或作为基于满意加入条件既定目标表的插入.

 SELECT * FROM

  (
SELECT , ROWNUM AS rownum_a

  
FROM TABLE_A

  ) ALIAS_A,

  (
SELECT , ROWNUM AS rownum_b

  
FROM TABLE_B

  ) ALIAS_B

  
WHERE ALIAS_A.rownum_a = ALIAS_B.rownum_b;

    假定要归并的记录的数目过大(如数以百万计),这种办法潜在的缺陷是什么?那么,当一行作为一个记录时又若何了?我们没有真正的掌握权决意的查询所返回后果行的次序,直到我们履行查询之前,甲骨文是不知道记录的行号的.换言之, ROWNUM是在这样的事实上成立的.假如你要从两个地方挑选数百万行,你将支付甲骨文公司为每个记录分配行号(只针对你的查询,而不是永久)的时间.

    让我们监测将两个有100万行的表归并到一同的一个会话.在这第一个例子中,这个数据源已经记录可100万个记录.表A范围从1到1000000及表B范围从1000001至2000000 (即在第一个表中再加入100万行) .假如加入后可以完善的保持行的次序,那么有序对将像下面表格这个模样:

    当我们查看数据时(通过Toad)发现Oracle数据库并不履行一个完善的排序,并且相差甚远.

    该ROWNUM_A和B值一个一个都匹配,因为这是我们匹配/归并的.注意:记录1321 (和1001321 )是若何同ROWNUM 1标志在一同的 .所以我们可以推断是,甲骨文以一样的方法弥补表格之间的空白区块.这应当说服你一次乃至永久(假如你至今还不知知道), ROWNUM虚拟数据列已没有意义或与个表中记录的实际次序无关.

    成立表的声明追踪, 经过TKPROF 解析后,输出后果以下:

CREATE TABLE TABLE_ROWNUM AS

  
SELECT * FROM

  (
SELECT ID, ROWNUM AS rownum_a

  
FROM TABLE_A)

  ALIAS_A,

  (
SELECT ID AS id_b, ROWNUM AS rownum_b

  
FROM TABLE_B)

  ALIAS_B

  
WHERE ALIAS_A.rownum_a = ALIAS_B.rownum_b

  call
count cpu elapsed disk query current rows

  
------- ------ -------- ---------- ---------- ---------- ---------- ----------

  Parse
1 0.01 0.00 0 0 0 0

  
Execute 1 4.41 5.63 1770 12324 5239 1000000

  
Fetch 0 0.00 0.00 0 0 0 0

  
------- ------ -------- ---------- ---------- ---------- ---------- ----------

  total
2 4.42 5.64 1770 12324 5239 1000000

    我们知道一个事实,即每个表都有100万行.在解析了表后, NUM_ROWS值显示为1034591 .当与甲骨文本身将通过持续计数报告的值相对比时要当心依靠通过第三方工具查抄出的值(包含从USER_TABLES挑选NUM_ROWS ).为什么会有差别呢?能否是因为解析是基于样本或预算的数据,或按照查抄到的每个记录?


  以上是“<b>如安在Oracle数据库中联合异构数据-开辟技术</b>[Oracle防范]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
  • <b>hosts是什么 hosts文件在什么位置 若何改正hosts</b>
  • <b>在 Windows 8 中手动安装语言包</b>
  • <b>五个常见 PHP数据库问题</b>
  • Windows中Alt键的12个高效快速的利用本领介绍
  • <b>MySQL ORDER BY 的实现解析</b>
  • <b>详解MySQL存储历程参数有三种范例(in、out、inout)</b>
  • <b>Win8系统恢复出来经典的开始菜单的办法</b>
  • <b>Win8系统花屏怎么办 Win8系统花屏的办理办法</b>
  • <b>Windows 7系统下无线网卡安装</b>
  • <b>为什么 Linux不需求碎片整理</b>
  • <b>Windows 8中删除账户的几种办法(图)</b>
  • <b>教你如安在win7下配置路由器</b>
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .