看见朋友导入数据,花了很长时间都没完成!其实有很多快速的方法,整理下!

向表中插入数据有很多办法,但是方法不同,性能差别很大.

----1.原始语句

drop table t1 purge;

create table t1

(

sid number,

sname varchar2(20)

) tablespace test;

create or replace procedure proc01

(

sname varchar2

)

as

begin

for i in 1..10000000

loop

execute immediate

'insert into t1(sid,sname) values('||i||','''||sname||''')';

commit;

end loop;

end;

/

alter system flush shared_pool;

set timing on;

exec proc01('ocpyangtest');

已用时间: 02: 02: 54.12

----2.绑定变量

drop table t1 purge;

create table t1

(

sid number,

sname varchar2(20)

) tablespace test;

create or replace procedure proc02

(

sname varchar2

)

as

begin

for i in 1..10000000

loop

execute immediate

'insert into t1(sid,sname) values(:no'||','''||sname||''')' using i;

commit;

end loop;

end;

/

alter system flush shared_pool;

set timing on;

exec proc02('ocpyangtest');

已用时间: 00: 22: 59.79

select count(*) from t1;

----3.静态语句

drop table t1 purge;

create table t1

(

sid number,

sname varchar2(20)

) tablespace test;

create or replace procedure proc03

as

begin

for i in 1..10000000

loop

insert into t1 values(i,'ocpyangtest');

commit;

end loop;

end;

/

alter system flush shared_pool;

set timing on;

exec proc03;

已用时间: 00: 20: 42.42

select count(*) from t1;

----4.批量提交

drop table t1 purge;

create table t1

(

sid number,

sname varchar2(20)

) tablespace test;

create or replace procedure proc04

as

begin

for i in 1..10000000

loop

insert into t1 values(i,'ocpyangtest');

end loop;

commit;

end;

/

alter system flush shared_pool;

set timing on;

exec proc04;

已用时间: 00: 11: 48.42

----5.集合

drop table t2 purge;

create table t2

(

sid number,

sname varchar2(20)

) tablespace test;

alter system flush shared_pool;

select count(*) from t1;

set timing on;

insert into t2 select sid,sname from t1;

已用时间: 00: 01: 02.18

commit;

select count(*) from t2;

----6. 集合+append

drop table t2 purge;

create table t2

(

sid number,

sname varchar2(20)

) tablespace test;

alter system flush shared_pool;

select count(*) from t1;

set timing on;

insert /* + append */ into t2 select sid,sname from t1;

已用时间: 00: 00: 36.94

commit;

select count(*) from t2;

----7. 集合+append+nologging

drop table t2 purge;

create table t2

(

sid number,

sname varchar2(20)

) nologging tablespace test;

alter system flush shared_pool;

select count(*) from t1;

set timing on;

insert /* + append */ into t2 select sid ,sname from t1;

已用时间: 00: 00: 35.07

commit;

select count(*) from t2;

----8.数据加载1

drop table t2 purge;

alter system flush shared_pool;

select count(*) from t1;

set

oracle插入性能优化,Oracle- insert性能优化相关推荐

  1. oracle 插入一个语句,oracle如何通过1条语句插入多个值 oracle通过1条语句插入多个值方法...

    本篇文章小编给大家分享一下oracle通过1条语句插入多个值方法,小编觉得挺不错的,现在分享给大家供大家参考,有需要的小伙伴们可以来看看. 在实践过程中遇到一个问题, 我想往数据库插入多条数据时,使用 ...

  2. oracle语句优化pl sql语句,求oracle插入初始数据pl/sql语句优化,该怎么处理(2)

    SQL codeCREATE OR REPLACE PROCEDURE thi_pro AS randomnum NUMBER; randomnum2 NUMBER; randomnum3 NUMBE ...

  3. mysql insert 性能_MySQL 提高Insert性能

    插入一个记录需要的时间由下列因素组成,其中的数字表示大约比例: 连接:(3) 发送查询给服务器:(2) 分析查询:(2) 插入记录:(1x记录大小) 插入索引:(1x索引) 关闭:(1) 这不考虑打开 ...

  4. oracle插入日期异常,Oracle插入日期数据常见的2个问题和解决方法

    1.无效的月份问题 最近在往数据库中插入时间时,Oracle报"无效的月份问题",具体SQL如下:INSERT INTO TS_COUNT ( ID,CNAME, STARTTIM ...

  5. oracle插入数据方式,Oracle批量插入数据的三种方式

    第一种: begin insert into tableName(column1, column2, column3...) values(value1,value2,value3...); inse ...

  6. oracle中插入日期型数据,ORACLE插入日期数据

    ORACLE插入日期数据 oracle数据库插入日期型数据 往Oracle数据库中插入日期型数据(to_date的用法) INSERT  INTO  FLOOR  VALUES  ( to_date ...

  7. oracle的日期插入,ORACLE插入日期数据

    ORACLE插入日期数据 oracle数据库插入日期型数据 往Oracle数据库中插入日期型数据(to_date的用法) INSERT  INTO  FLOOR  VALUES  ( to_date ...

  8. Oracle 插入数据

    Oracle 插入数据 顾名思义,INSERT用于向数据库插入(添加行). 可以以多种方式使用插入操作: 插入单个完整的行; 插入单个部分行: 插入多行: 插入查询的结果. 提示:insert 和系统 ...

  9. oracle proc编程 fetch,Oracle Proc编程性能优化经验

    Proc 是Oracle提供的一种数据库操做的AP.它是基于ESql技术的,须要预编译后才能够变成普通c代码,很是不直观,使用起来不太方便,阅读也存在困难.程序员 由于这些问题致使程序员平时开发中会出 ...

  10. Oracle Freelist和HWM原理及性能优化

    近期来,FreeList的重要作用逐渐为Oracle DBA所认识,网上也出现一些相关的讨论.本文以FreeList为线索对Oracle的存储管理的原理进行较深入的探讨,涉及Oracle段区块管理的原 ...

最新文章

  1. 在VS2010下使用 UNICODE 和 ANSI 的混合编程
  2. 操作系统(二十九)预防死锁
  3. 数据库升级后,准备使用原有数据文件启动数据库
  4. udp本地通信需要注意哪些方面_验房注意什么?验房都需要检查哪些方面?
  5. 开放源代码_您对开放源代码感兴趣了多少年?
  6. 怎么配置java ee_如何配置Java EE Eclipse+Tomcat开发环境
  7. 设计模式系列之「观察者模式」
  8. Error 2503 and 2502 when installing/uninstalling on Windows 10
  9. mysql var目录很快_mysql数据库实现亿级数据快速清理的方法
  10. 常用的linux命令-vim
  11. FlashFXP连接失败(连接已拒绝)及530 permission denied(连接已被客户端关闭)
  12. TMS320F28377D的外设应用笔记(1)——Epwm配置
  13. 厦大计算机 专硕 分数线,厦门大学2020年专硕复试分数线
  14. android 打开wifi并链接到制定ip,在安卓WiFi-Direct连接中获取对等设备IP地址的方法及设备与流程...
  15. python实现多EXCEL表格合并xls、xlsx格式
  16. JavaScript 中字符串截取 (+实现)
  17. 漫谈程序猿系列:怎么告别“混日子”
  18. 鸿蒙os开源连接,全场景无缝连接 鸿蒙OS开源邀请全球开发者共助生态发展
  19. ULINK的手动刷新固件
  20. 【笔记】继电器·非门

热门文章

  1. Python数据类型-元组类型
  2. 利用Inception-V3训练的权重微调,实现猫狗分类(基于keras)
  3. Ts_半分查找猜数字游戏(初始版),
  4. jpa原生query_Spring Data JPA原生SQL查询
  5. python 四足机器人运动学_撸了个四足机器人
  6. java程序输出88的0 1矩阵_《剑指Offer》Java实现--顺时针打印矩阵
  7. PID控制器开发笔记之三:抗积分饱和PID控制器的实现
  8. 如何在摆摊经济中脱颖而出
  9. 红帽Linux7怎么修改网卡名称,新安装的Centos 7系统怎么将网卡名称改为eth0?
  10. mysql 不需要@的变量_mysql参数变量