oracle的insert 有两种方式,一种是普通的通过读取磁盘block到SGA,插入buffer,并通过Redo log的方式,这样的方式缺点是比较慢。
oracle还提供了一个钟相对较快的插入方式(直接路径插入),该方法不去查找已有块的位置,直接从高水位线之上开始插入数据。它对元数据的变更通过撤销和重做来保护数据字典(我理解就是无法回滚)。
insert /*+ append_values */ into dual(dummy) values('y');
insert /*+ append */ into big_table select * from temp1;
禁用约束,启用append:
alter table big_tab disable constraint big_tab_pk;
insert /*+ append */ into big_tab select * from tab;