博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Oracle sql优化示例
阅读量:5286 次
发布时间:2019-06-14

本文共 1584 字,大约阅读时间需要 5 分钟。

1. 循环插入1到10w数值

1 create or replace procedure proc_test  2 as 3 begin 4   for i in 1..100000 5     loop 6       execute immediate 7       'insert into t values(' || i || ')'; 8       commit; 9     end loop;10 end;11 /

2. 使用变量绑定,减少sql解析

1 create or replace procedure proc_test  2 as 3 begin 4   for i in 1..100000 5     loop 6       execute immediate 7       'insert into t values(:x) ' using i; ---使用变量,sql只需解析一次,而第一种写法,需要解析1w次。 8       commit; 9     end loop;10 end;11 /

3. 使用静态SQL,编译过程即完成解析,而动态SQL是在执行过程中解析的

1 create or replace procedure proc_test  2 as 3 begin 4   for i in 1..100000 5     loop 6       --execute immediate 删除该行, execute immediate是一种动态SQL写法, 常用于表名,字段名是变量,入参的情况,但这里表名是已知的,直接用静态SQL即可,          --静态SQL会自动使用绑定变量, 而且是在编译过程就解析好了,而动态SQL是在执行过程中解析的。 7       insert into t values(i);  8       commit; 9     end loop;10 end;11 /

4. 批量commit.

1 create or replace procedure proc_test  2 as 3 begin 4   for i in 1..100000 5     loop 6       insert into t values(i); 7     end loop; 8     commit; --批量提交 9 end;10 /

5. 写成一条sql,由原来过程一条一条插入,变成一个集合的概念,一整批写入DATA BUFFER区。

1 insert into t select rownum from dual connect by level<=1000000;2 commit;

6. 直接路径方式插入数据,insert into t select ...是将数据先写入DATA BUFFER中,再刷到磁盘里,而create table t ...跳过了数据缓存区,直接写入磁盘。

这种方式一般用于数据迁移。

1 create table t as select rownum x from dual connect by level<=1000000;

 7. 还有一种方法,在多CPU机器上,关闭日志nologging,并且设置parallel 16 表示用到16个CPU。

不过该方法会占用大量CPU资源,比较影响其他应用,使用时要三思而后行。

1 create table t nologging parallel 16 2 as select rownum x from dual connect by level<=1000000;

 

转载于:https://www.cnblogs.com/jingweiyoung/p/8494495.html

你可能感兴趣的文章
模板设计模式的应用
查看>>
12010 解密QQ号(队列)
查看>>
方维分享系统二次开发, 给评论、主题、回复、活动 加审核的功能
查看>>
Matlab parfor-loop并行运算
查看>>
string与stringbuilder的区别
查看>>
2012-01-12 16:01 hibernate注解以及简单实例
查看>>
iOS8统一的系统提示控件——UIAlertController
查看>>
PAT甲级——1101 Quick Sort (快速排序)
查看>>
python创建进程的两种方式
查看>>
1.2 基础知识——关于猪皮(GP,Generic Practice)
查看>>
迭代器Iterator
查看>>
java易错题----静态方法的调用
查看>>
php建立MySQL数据表
查看>>
最简单的线程同步的例子
查看>>
旅途上看的电影和观后感
查看>>
Ztree异步树加载
查看>>
关于IE和火狐,谷歌,Safari对Html标签Object和Embed的支持问题
查看>>
poj3320 Jessica's Reading Problem(尺取思路+STL)
查看>>
分布式计算开源框架Hadoop介绍
查看>>
坏的事情不都会带来坏的结果
查看>>