SQL优化————Insert
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.10)SQL优化——mysql 常见SQL优化
(1.10)常用SQL优化 insert优化.order by 优化 1.insert 优化 2.order by 优化 [2.1]mysql排序方式: (1)索引扫描排序:通过有序索引扫描直接返回有 ...
- sql 优化
1.选择最有效率的表名顺序(只在基于规则的优化器中有效): oracle的解析器按照从右到左的顺序处理 from 子句中的表名,from子句中写在最后的表(基础表driving table)将被最先处 ...
- SQL 优化总结
SQL 优化总结 (一)SQL Server 关键的内置表.视图 1. sysobjects SELECT name as '函数名称',xtype as XType FROM s ...
- (转)SQL 优化原则
一.问题的提出 在应用系统开发初期,由于开发数据库数据比较少,对于查询SQL语句,复杂视图的的编写等体会不出SQL语句各种写法的性能优劣,但是如果将应用 系统提交实际应用后,随着数据库中数据的增加,系 ...
- ORACLE常用SQL优化hint语句
在SQL语句优化过程中,我们经常会用到hint,现总结一下在SQL优化过程中常见Oracle HINT的用法: 1. /*+ALL_ROWS*/ 表明对语句块选择基于开销的优化方法,并获得最佳吞吐量, ...
- 提高SQL查询效率(SQL优化)
要提高SQL查询效率where语句条件的先后次序应如何写 http://blog.csdn.net/sforiz/article/details/5345359 我们要做到不但会写SQL,还要做到 ...
- sql优化建议
背景: 在北京工作期间,我们做应用开发的和后台数据库的联系非常大,我们经常在一起讨论存储过程或者是sql性能优化的事情来降低应用运行时的时间,提高性能,经过和数据库方面的工程师的一些讨论 ...
- SQL优化法则小记
SQL优化技巧 1.选择最有效率的表名顺序(只在基于规则的优化器中有效): oracle的解析器按照从右到左的顺序处理 from 子句中的表名,from子句中写在最后的表(基础表 driving ta ...
- SQL优化之【类型转换】
DBA的日常工作中SQL优化占大半的时间,通常都是SQL语句性能问题或者schema设计有问题,最近遇到一个类型转换的问题,所以在这里分享一下,废话不多说了,直接建表进行测试. mysql), key ...
随机推荐
- 【CPLEX教程01】Cplex介绍,下载和安装Cplex
前言 最近学习列生成算法,需要用到优化求解器.所以打算学习一下cplex这个商业求解器. 当然也有其他更多的选择,这里暂时以比较容易上手和性能比较好的cplex开始吧.其实,小编也早就想学习使用这个c ...
- AutoCAD .NET二次开发(一)
其他话不多说,直接进入主题,既然是二次开发,当然是用CAD平台已经封装好了很多类,我们需要熟悉和使用它们.常用的AutoCAD .NET API的四个主要DLL文件是: 名称 作用 备注 AcDbMg ...
- Spark设置自定义的InputFormat读取HDFS文件
本文通过MetaWeblog自动发布,原文及更新链接:https://extendswind.top/posts/technical/problem_spark_reading_hdfs_serial ...
- 用vue做的购物车结算的功能
<!-- 占位 --> <template> <div> <div class="product_table"> <div c ...
- 利用iterm2,在命令行预览图片,服务器也是可以的
1.首先你本地电脑上要安装iterm2软件,我们这里使用brew安装 这个是一定要装的,因为能在命令行渲染出图片文件全靠它,其实不是服务器渲染出来的,而是iterm2 官方网站:https://www ...
- python面向对象继承
class A(object):pass # 括号中可称为父类,基类,超类 class B:pass # 父类,基类,超类 class A_son(A,B):pass # 子类,派生类 class A ...
- Flutter扫码识别二维码内容
前面一篇写了生成二维码图片,这篇来写使用相机扫描识别二维码 识别二维码需要用到插件 barcode_scan 首先在 pubspec.yaml 文件中添加以下依赖,添加依赖后在 pubspec.yam ...
- Spring IOC的缓存
1.将上一篇的测试代码修改如下 public class SpringTest { public static void main(String[] args) { ClassPathResource ...
- js怎么模拟点击网页元素
在测试页面中,引入jquery源文件,并添加一个div标签,一个a标签,为了演示效果a标签暂时不添加地址 通过jquery为div标签绑定一个点击事件,这个事件是被动执行的.意思是要点击才会触发的 在 ...
- bat和cmd文件是什么,dos又是什么东西
bat文件是dos下的批处理文件.批处理文件是无格式的文本文件,它包含一条或多条命令.它的文件扩展名为 .bat 或 .cmd.在命令提示下键入批处理文件的名称,或者双击该批处理文件,系统就会调用cm ...