从表A中选取其ID不在表B中的记录,如何提高效率?
有3个表:saved_table(id, name), original_table(id, name), deleted_table(id);original_table中有200w条记录, deleted_table中有90w条记录,这些记录就是original_table中应该被删除的记录。
要求:
根据deleted_table中的id,将original_table中id不在deleted_table中的记录写入到saved_table中(共110w条)。
我的方法:
INSERT /*+ APPEND */ INTO saved_table NOLOGGING
SELECT /*+ HASH_AJ */ *
FROM original_table
WHERE id NOT IN (SELECT id FROM deleted_table);
问题是,这样子还是很慢,有没有其他的方法? CREATE TABLE saved_table NOLOGGING AS
SELECT c.*
FROM original_table o, deleted_table d
WHERE o.id =d.id(+)
AND d.id IS NULL; SELECT /*+ HASH_AJ */ *
FROM original_table t1 WHERE not exists
(SELECT 1 FROM deleted_table t2 where t1.id =t2.id );
页:
[1]