何百万ものレコードを挿入する場合、最初に増分コミットを行うことです。これは、一時スペースの断片化または制限に達して速度が低下する可能性があるためです。これはbegin endブロックでも実行できます。これにより、次の方法でインデックスを追加できます
create index b indexName on table_name(col1, col2, col3);
以前の回答が述べているように、マージはより高速です。
または、すべての無視する重複を追加してから、重複を削除します。これは、たとえば次の方法
で実行できます
begin
insert into table_name select * from table_name; [ if pulling from another table]or[use values and column maps]
delete from table_name A where rowid >(select min(rowid) from table_name B where A.key_value=B.key_value);
end
プロシージャ内でクエリと削除の両方が必要な場合は、begin end ブロックに配置して、immediate(' you ddl statement here';'); を実行できます。