- 论坛徽章:
- 0
|
库为oracle 9.2
想实现如下:
CREATE TABLE target_table(col1 VARCHAR2(10) PRIMARY KEY, col2 float);
CREATE TABLE source_table(col1 VARCHAR2(10) PRIMARY KEY, col2 float);
...
MERGE INTO target_table USING source_table ON target_table.col1=source_table.col1
WHEN MATCHED THEN UPDATE SET target_table.col2=target_table.col2 + source_table.col2
WHEN NOT MATCHED THEN INSERT (target_table.col1, &target_table.col2) VALUES (source_table.col1,source_table.col2);
target_table是数据仓库(千万行级),source_table是几千行,需要不断把source_table的数据合并到target_table,用merge语句是否够高效?
我想另外一种办法是用文件方式,先把源、目文件排序,然后并行扫描两个文件,比较当前值,然后插入或更新。
文件方式是一遍可以做完,数据库的merge也是扫描一遍吗?
您认为哪种办法更有效呢?
谢谢! |
|