WEB开发网
开发学院数据库Oracle Oracle数据库异构数据联结详解 阅读

Oracle数据库异构数据联结详解

 2008-12-26 13:08:21 来源:WEB开发网   
核心提示: 当我们查看数据时(通过Toad)发现Oracle数据库并不执行一个完美的排序,并且相差甚远,Oracle数据库异构数据联结详解(2),该ROWNUM_A和B值一个一个都匹配,因为这是我们匹配/合并的, NUM_ROWS值显示为1034591 ,当与甲骨文本身将通过连续计数报告的值相比较时要

Oracle数据库异构数据联结详解

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

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 )。为什么会有差异呢?是否是因为分析是基于样本或估算的数据,或根据检查到的每个记录?

上一页  1 2 3 4  下一页

Tags:Oracle 数据库 数据

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接