解决方案 »

  1.   

    forall 使用限制很多,比如后面只能跟一条DML语句,这样就可以省掉了 switch context 的时间,在 insert 是表现最佳。你提到的 delete ,并不会有很明显的效率的提升,不过你可以把 1W 行,提高到 100W 行再试试。
    而 for 语句因为可以使用 loop ,所以可以跟多条 DML ,甚至去调用一个 PROC ,
      

  2.   

    forall比起for,可以减少上下文切换,这是效率提升的原因所在
    insert和delete、update有个不同的地方,insert只是将数据填充到数据块中,而delete、update需要通过where条件,定位到要处理的那条记录。定位时间越长,这部分开销所占比例就越大,减少上下文切换带来的节省时间就越不明显