我有两个地址表,如:A1,街道,城市,建筑和其他一个A2,这三列和其他。表格没有相同的结构,A1没有主键,因为不在我的数据库中,所以我无法添加一个。
所以,我想插入A1中不在A2中的所有数据,比较STREET,CITY和BUILDING列。
我怎么能这样做,因为在oracle中字符串列的比较非常慢。我注意到我有很多数据。 我可以用批处理和bulkinsert以某种方式做到这一点吗?
谢谢
答案 0 :(得分:0)
更新:尝试合并,基本上做同样的事情。另请参阅是否可以在连接条件中的列上创建索引,这将提高性能。
MERGE INTO A2
USING A1
ON (a1.street=a2.street and a1.city=a2.city and a1.building=a2.building)
WHEN NOT MATCHED THEN
INSERT (Street,City,Building)
VALUES (a1.Street,a1.City,a1.Building);
一个:
insert into A2 (Street,City,Building)
select a1.Street,a1.City,a1.Building
from a1 left join a2
on a1.street=a2.street and a1.city=a2.city and a1.building=a2.building
where a2.street is null and a2.city is null and a2.building is null