Oracle数据库异构数据联结详解
2008-12-26 13:08:21 来源:WEB开发网当我们查看数据时(通过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 )。为什么会有差异呢?是否是因为分析是基于样本或估算的数据,或根据检查到的每个记录?
- ››oracle 中 UPDATE nowait 的使用方法
- ››Oracle ORA-12560解决方法
- ››Oracle 10g RAC 常用维护命令
- ››Oracle如何在ASM中定位文件的分布
- ››Oracle的DBMS_RANDOM.STRING 的用法
- ››oracle 外部表导入时间日期类型数据,多字段导入
- ››Oracle中查找重复记录
- ››oracle修改用户登录密码
- ››Oracle创建删除用户、角色、表空间、导入导出等命...
- ››Oracle中登陆时报ORA-28000: the account is lock...
- ››Oracle数据库在配置文件中更改最大连接数
- ››Oracle中在pl/sql developer修改表的两种方式
更多精彩
赞助商链接