当前位置:Gxlcms > 数据库问题 > SQL优化————Insert

SQL优化————Insert

时间:2021-07-01 10:21:17 帮助过:29人阅读

into tab1 select /*+ parallel */ * from tab2

最大并发度初始化参数parallel_max_servers,并发的进程可以通过v$px_session查看,或者ps -ef |grep ora_p查看

5.

insert /*+APPEND*/
    into table NOLOGGING
  • 采用append插入的前提是该表上边没有大量的delete,
  • 需要该表的数据不重要,否则修改为nologging后万一数据丢失可能就找不回来
  • 还可以将索引也设置为nologging,毕竟索引记录redo也没啥用
  • 该方法适合单进程的串行方式,如果有多个进程同时运行时,后发起的进程会有enqueue的等待。注意此方法千万不能dataguard上用(不过要是在database已经force logging那也是不怕的,呵呵)!!

6.并行插入

alter session enable parallel dml;

      insert /*+ parallel */ into tab1 select * from tab2;

7.对于分区表,可以构建多个进程进行插入数据。

8.批量绑定(bulk binding),减少上下文切换。

DECLARE

      TYPE array IS TABLE OF VARCHAR2(20) INDEX BY BINARY_INTEGER;

      v_col1 array;

      v_col2 array;

      v_col3 array;

      BEGIN

      SELECT col1, col2, col3 BULK COLLECT

      INTO v_col1, v_col2, v_col3

      FROM tab2;

      FORALL i IN 1 .. v_col1.COUNT

      insert into tab1 WHERE tab1.col1 = v_col1;

      END;

9.

  

 

SQL优化————Insert

标签:database   生产环境   select   表数据   log   session   参数   type   ble   

人气教程排行