Oracle 逐条和批量插入数据方式对比
创建测试表
create table base_users
(
userid varchar2(16),
username varchar2(32),
passwd varchar2(16)
)tablespace cat_data;
采用一条一条插入的方式
create or replace procedure insert_data_one_by_one(n in number)
as
currentId number(16) := 0;
l_userid varchar2(16);
l_username varchar2(32);
sqltext varchar2(256);
begin
dbms_output.put_line('begin ...' || to_char(current_timestamp, 'HH24:MI:SSxFF'));
sqltext := 'insert into base_users(userid, username, passwd) values(:userid, :username,' || '111111 )';
loop
currentId:=currentId + 1;
l_userid:= to_char(currentId);
l_username:= to_char(18600000000 + currentId);
execute immediate sqltext using l_userid, l_username;
exit when currentId >= n;
end loop;
commit;
dbms_output.put_line('end commit ...' || to_char(current_timestamp, 'HH24:MI:SSxFF'));
end insert_data_one_by_one;
/
采用批量插入的方式
create or replace procedure insert_data_bulk(n in number)
as
i int;
tmp_userid number;
tmp_username number;
type useridArray is table of varchar2(16) index by binary_integer;
type usernameArray is table of varchar2(32) index by binary_integer;
puserid useridArray;
pusername usernameArray;
begin
dbms_output.put_line('begin ...' || to_char(current_timestamp, 'HH24:MI:SSxFF'));
tmp_userid := 1;
tmp_username := 18600000000;
for i in 1 .. n loop
puserid(i) := tmp_userid;
pusername(i) := tmp_username;
tmp_userid := tmp_userid + 1;
tmp_username := tmp_username + 1;
end loop;
forall i in 1 ..n
insert into base_users(userid, username, passwd)
values(puserid(i), pusername(i), '111111');
commit;
dbms_output.put_line('end ...' || to_char(current_timestamp, 'HH24:MI:SSxFF'));
endinsert_data_bulk;
/
测试1千万条数据的插入
SQL>set serveroutput on
SQL>begin
insert_data_one_by_one(10000000);
end;
/
begin ...22:14:01.572928000
end commit ...22:20:43.911104000
SQL>truncate table base_users;
SQL>begin
insert_data_bulk(10000000);
end;
/
begin ...22:25:31.497810000
end ...22:27:23.801515000
Oracle 逐条和批量插入数据方式对比的更多相关文章
- android批量插入数据效率对比
对比在android中批量插入数据的3中方式对比(各插入1W条数据所花费的时间): 1. 一个一个插入 /** * 向表中插入数据 * * @param openHelper * @param app ...
- oracle结合mybatis批量插入数据
先上代码: controller: result = service.insertTRbXdhjLendYdData(params); service: List<TRbXdhjLendDTO& ...
- EF批量插入数据耗时对比
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...
- 使用Oracle的存储过程批量插入数据
原文地址:http://www.cnblogs.com/liaoyu/p/oracle-procedure-batch-insert.html 作者:L君还在说之乎者也 最近在工作中,需要使用生成一些 ...
- 批量插入数据(基于Mybatis的实现-Oracle)
前言:做一个数据同步项目,要求:同步数据不丢失的情况下,提高插入性能. 项目DB框架:Mybatis.DataBase:Oracle. -------------------------------- ...
- C#批量插入数据到Sqlserver中的四种方式
我的新书ASP.NET MVC企业级实战预计明年2月份出版,感谢大家关注! 本篇,我将来讲解一下在Sqlserver中批量插入数据. 先创建一个用来测试的数据库和表,为了让插入数据更快,表中主键采用的 ...
- C#批量插入数据到Sqlserver中的三种方式
本篇,我将来讲解一下在Sqlserver中批量插入数据. 先创建一个用来测试的数据库和表,为了让插入数据更快,表中主键采用的是GUID,表中没有创建任何索引.GUID必然是比自增长要快的,因为你生 成 ...
- C#_批量插入数据到Sqlserver中的四种方式
先创建一个用来测试的数据库和表,为了让插入数据更快,表中主键采用的是GUID,表中没有创建任何索引.GUID必然是比自增长要快的,因为你生成一个GUID算法所花的时间肯定比你从数据表中重新查询上一条记 ...
- C#批量插入数据到Sqlserver中的四种方式 - 转
先创建一个用来测试的数据库和表,为了让插入数据更快,表中主键采用的是GUID,表中没有创建任何索引.GUID必然是比自增长要快的,因为你生成一个GUID算法所花的时间肯定比你从数据表中重新查询上一条记 ...
随机推荐
- 怎样新建Oracle数据库
新建Oracle数据库三种方法:1.通过运行Oracle Database Configuration Assistant 创建配置或删除数据库(也可在命令行下输入dbca):2.用命令行的方式建立数 ...
- 浅谈算法和数据结构: 七 二叉查找树 八 平衡查找树之2-3树 九 平衡查找树之红黑树 十 平衡查找树之B树
http://www.cnblogs.com/yangecnu/p/Introduce-Binary-Search-Tree.html 前文介绍了符号表的两种实现,无序链表和有序数组,无序链表在插入的 ...
- zend studio 注释快捷键
使用zend studio编写程序时,我们经常要做一些注释.zend studio为我们提供了行注释和块注释的快捷键ctrl+slash和ctrl+shift+slash,开始不明白什么是slash, ...
- 修改idea的运行内存
1.如果本地的jdk是32位的,那么最大的内存只能支持到1024 2.测试jdk位数 public class Test { public static void main(String[] args ...
- 【Java】常见的Set类型,HashSet、TreeSet、LinkedHashSet
HashSet,锋芒毕露,我们最常用到.其他两个,我们较少用到,今天,我们看看他们的区别. import java.util.HashSet; import java.util.Set; public ...
- Maven项目的目录结构+maven的安装与配置
1.首先下载maven,然后配置环境变量,在MyEclipse里面配置maven 2.配置maven的pom.xml文件 3.下载和更新资源 右击项目,有一个Maven4Myeclipse,里面有三个 ...
- SqlSever基础 group by之后,加having 对分组之后的数据在进行处理
镇场诗:---大梦谁觉,水月中建博客.百千磨难,才知世事无常.---今持佛语,技术无量愿学.愿尽所学,铸一良心博客.------------------------------------------ ...
- 【leetcode❤python】66. Plus One
class Solution: # @param digits, a list of integer digits # @return a list of integer digi ...
- BZOJ 1413 取石子游戏(DP)
题目链接:http://61.187.179.132/JudgeOnline/problem.php?id=1413 题意:n堆石子排成一排.每次只能在两侧的两堆中选择一堆拿.至少拿一个.谁不能操作谁 ...
- BOM DOM
http://www.cnblogs.com/yexiaochai/archive/2013/05/28/3102674.html DOM Document Object Model 文档对象模型 一 ...