Oracle数据库异构数据联结详解
2008-12-26 13:08:21 来源:WEB开发网现在,对于合并数据有一个可供选择的办法。那就是让我们使用一个真正的列替代虚拟数据列,一个自然的选择是创建(在某种意义上)基于序列替代关键字。这个办法是为每个表添加一个命名为SEQ的列,并且在基于序列号对他们进行更新,并且保证每次更新使用相同的起点和相同的增量。对一个表更新操作如下所示。
SQL> create sequence tab_b;
Sequence created.
Elapsed: 00:00:00.05
SQL> update table_b set seq = tab_b.nextval;
1000000 rows updated.
Elapsed: 00:05:00.05
有一件事应该可以立即脱颖而出:创造一个合并关键字所花费的时间刚刚超过五分钟,或是ROWNUM采取的方法所花费时间的13倍,这只是对两个表中的一个表所进行操作所花费的时间(第一张表格花费五分钟进行更新) 。增加或创建一个合并关键字是必要的,如有可能,最好在创建表的时候就创建。那么,比通过ROWNUM做同样的事情所多花费的关键点是什么?
根据新的设置,如何进行合并?
CREATE TABLE TABLE_SEQ AS
SELECT * FROM
(SELECT ID, SEQ AS seq_a
FROM TABLE_A)
ALIAS_A,
(SELECT ID AS id_b, SEQ AS seq_b
FROM TABLE_B)
ALIAS_B
WHERE ALIAS_A.seq_a = ALIAS_B.seq_b
call count cpu elapsed disk query current rows
------- ------ -------- ---------- ---------- ----------
Parse 1 0.00 0.06 0 0 0 0
Execute 1 10.64 24.43 12186 12370 5677 1000000
Fetch 0 0.00 0.00 0 0 0 0
------- ------ -------- ---------- ---------- ----------
total 2 10.64 24.49 12186 12370 5677 1000000
- ››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修改表的两种方式
更多精彩
赞助商链接