1.如果是非生产环境,可以先将索引和约束删掉,等数据插入完之后,再建立索引和约束。

2.如果一次性插入数据较大,可以使用游标,每次小批量的插入数据。

3.如果数据表太大,可以构建历史表,老数据通常不会再使用,可以将老数据、历史数据归档至历史表中,同样的,历史表数据插完之后再建索引等。

4.并行select插入/*+PARALLEL(8)*/

 insert 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的更多相关文章

  1. (1.10)SQL优化——mysql 常见SQL优化

    (1.10)常用SQL优化 insert优化.order by 优化 1.insert 优化 2.order by 优化 [2.1]mysql排序方式: (1)索引扫描排序:通过有序索引扫描直接返回有 ...

  2. sql 优化

    1.选择最有效率的表名顺序(只在基于规则的优化器中有效): oracle的解析器按照从右到左的顺序处理 from 子句中的表名,from子句中写在最后的表(基础表driving table)将被最先处 ...

  3. SQL 优化总结

    SQL 优化总结 (一)SQL Server 关键的内置表.视图 1. sysobjects         SELECT name as '函数名称',xtype as XType  FROM  s ...

  4. (转)SQL 优化原则

    一.问题的提出 在应用系统开发初期,由于开发数据库数据比较少,对于查询SQL语句,复杂视图的的编写等体会不出SQL语句各种写法的性能优劣,但是如果将应用 系统提交实际应用后,随着数据库中数据的增加,系 ...

  5. ORACLE常用SQL优化hint语句

    在SQL语句优化过程中,我们经常会用到hint,现总结一下在SQL优化过程中常见Oracle HINT的用法: 1. /*+ALL_ROWS*/ 表明对语句块选择基于开销的优化方法,并获得最佳吞吐量, ...

  6. 提高SQL查询效率(SQL优化)

    要提高SQL查询效率where语句条件的先后次序应如何写 http://blog.csdn.net/sforiz/article/details/5345359   我们要做到不但会写SQL,还要做到 ...

  7. sql优化建议

    背景:        在北京工作期间,我们做应用开发的和后台数据库的联系非常大,我们经常在一起讨论存储过程或者是sql性能优化的事情来降低应用运行时的时间,提高性能,经过和数据库方面的工程师的一些讨论 ...

  8. SQL优化法则小记

    SQL优化技巧 1.选择最有效率的表名顺序(只在基于规则的优化器中有效): oracle的解析器按照从右到左的顺序处理 from 子句中的表名,from子句中写在最后的表(基础表 driving ta ...

  9. SQL优化之【类型转换】

    DBA的日常工作中SQL优化占大半的时间,通常都是SQL语句性能问题或者schema设计有问题,最近遇到一个类型转换的问题,所以在这里分享一下,废话不多说了,直接建表进行测试. mysql), key ...

随机推荐

  1. shell脚本编程之条件判断

    条件测试类型: 整数测试 字符测试 文件测试 条件测试的表达式的三种方法: 1.[ expression ] 命令测试 2.[[ expression ]] 关键字测试 3.test expressi ...

  2. 数据结构实验之排序五:归并求逆序数(SDUT 3402)

    归并排序详解(戳我). 以下是搬了别人的. #include<stdio.h> #include<stdlib.h> long long sum = 0; int a[1000 ...

  3. pymongo错误记录

    1.AutoReconnect pymongo.errors.AutoReconnect: connection closed 2.ServerSelectionTimeoutError pymong ...

  4. vue+elementui搭建后台管理界面(3侧边栏菜单)

    上一节搭好了主框架,但是标签页和侧边栏只是分别展示了各自的菜单,如何将二者联动起来? 定义路由规则:当有 children 属性时,从 children 里取出 path 填充到侧边栏,如: { pa ...

  5. 20190729 将博客搬至CSDN

    为更方便技术交流, 现将博客园内容搬迁至csdn,  https://blog.csdn.net/lxw1844912514

  6. 数据库中的union与union all的区别

    Union因为要进行重复值扫描,所以效率低.如果合并没有刻意要删除重复行,那么就使用Union All  两个要联合的SQL语句 字段个数必须一样,而且字段类型要“相容”(一致): 如果我们需要将两个 ...

  7. sass - for循环写法

    如要设置多个li的动画延迟时间时 注:这里选择器要加#{}才行 不然就会编译成: 6.7. 插值语句 #{} (Interpolation: #{}) 通过 #{} 插值语句可以在选择器或属性名中使用 ...

  8. nodejs设置淘宝镜像

    nodeJS的资源仓库在国内使用过程中,偶尔会遇到各种资源问题,通常设置为淘宝的镜像,网上很多说法是安装淘宝镜像,即$ npm install -g cnpm --registry=https://r ...

  9. Tomcat 8.5.x RedisSessionManager show:Caused by: java.lang.NoSuchMethodError: com.crimsonhexagon.rsm.

    Caused by: java.lang.NoSuchMethodError: com.crimsonhexagon.rsm.RedisSessionManager.getMaxInactiveInt ...

  10. shell编程系列9--文本处理三剑客之sed概述及常见用法总结

    shell编程系列9--文本处理三剑客之sed概述及常见用法总结 sed的工作模式:对文本的行数据一行行处理,如下图 sed(stream editor),是流编辑器,依据特定的匹配模式,对文本逐行匹 ...