怎么样才能把40W条记录,快速插入到一临时表中。

hjp0214 2010-06-25 08:58:27
怎么样才能把40W条记录,快速插入到一临时表中。
...全文
429 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
ojuju10 2010-07-10
  • 打赏
  • 举报
回复
INSERT /*+APPEND */ INTO employee (empno, ename, sal, deptno)
SELECT /*+ parallel(emp)*/ empno, ename, sal, deptno FROM emp
WHERE deptno = 20;
ojuju10 2010-07-10
  • 打赏
  • 举报
回复
用append+parallel
minitoy 2010-07-10
  • 打赏
  • 举报
回复
append会加快效率?append貌似只是让你检索前面几条数据的时候速度快点,找到就返回结果,但是全部检索不能提升效率的
murton 2010-06-29
  • 打赏
  • 举报
回复
 INSERT /*+APPEND */ INTO employee (empno, ename, sal, deptno)
SELECT empno, ename, sal, deptno FROM emp
WHERE deptno = 20;
zjwssg 2010-06-29
  • 打赏
  • 举报
回复
/*+APPEND*/ 更快,既然是临时表,没必要搞日志,正适用。
wildoracle 2010-06-28
  • 打赏
  • 举报
回复
学习了,我也有一个这样的操作.30-40W条记录查询的可能有点慢

我本来用的方式是for loop 用cursor的方式insert.这和上面所说的
INSERT /*+APPEND*/ INTO t1 SELECT * from t2;

这一种方式比较哪里一种会快一点呢,明天去公司试下午
lzbbob1985 2010-06-28
  • 打赏
  • 举报
回复
with table as ???
lingjin520 2010-06-28
  • 打赏
  • 举报
回复
大量数据插入表 用下面的语句快,LZ试试看
--直接装载方式
INSERT /*+APPEND*/ INTO t1 SELECT * from t2;
vanjayhsu 2010-06-28
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 inthirties 的回复:]
引用 12 楼 sh_zhuting 的回复:

1、提高查询的速度,如建立索引
2、如果插入速度慢可以考虑分布插入,如:做一个循环,每次查询n条记录插入并提交一次


不错,

lz你这里所提的临时表,是指的应用上的临时表,还是oracle里提及的临时表,如果是前者,可以加上append的hint。

[/Quote]

应用上的临时表是不是指的一张物理表作为临时表,而oracle里提及的临时表,是否指的是下面这样?
with temp_table_name
as
(select ....)
inthirties 2010-06-28
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 sh_zhuting 的回复:]

1、提高查询的速度,如建立索引
2、如果插入速度慢可以考虑分布插入,如:做一个循环,每次查询n条记录插入并提交一次
[/Quote]

不错,

lz你这里所提的临时表,是指的应用上的临时表,还是oracle里提及的临时表,如果是前者,可以加上append的hint。
ztlover 2010-06-28
  • 打赏
  • 举报
回复
1、提高查询的速度,如建立索引
2、如果插入速度慢可以考虑分布插入,如:做一个循环,每次查询n条记录插入并提交一次
zmercury 2010-06-25
  • 打赏
  • 举报
回复
就用 SQL语句就行啊 如果要定时执行 就写个过程 用动态SQL 建个JOB就是了
EastHoo 2010-06-25
  • 打赏
  • 举报
回复
那就是用
insert into 表名 ... as select...
eeff 2010-06-25
  • 打赏
  • 举报
回复
insert /*+ APPEND */ into tempTable
xiaotuni 2010-06-25
  • 打赏
  • 举报
回复
insert into tempTable
select * from tableName where xxxx=xx;
commit;
hjp0214 2010-06-25
  • 打赏
  • 举报
回复
就是写个存储过程了。在后台执行,在同一数据库中取数
EastHoo 2010-06-25
  • 打赏
  • 举报
回复
问题描述的不清楚,比如是否同类型的数据库,要求网页脚本类型的还是就是纯粹的导入而已。
aa332073044 2010-06-25
  • 打赏
  • 举报
回复
create table xxx as select xxx from xxx where col=''
hjp0214 2010-06-25
  • 打赏
  • 举报
回复
是从oracle物理表,从有2千万条记录的表中,取40w条记录插入到一临时表中。
zjwssg 2010-06-25
  • 打赏
  • 举报
回复
如果是要构造:
SQL> begin
2 for i in 1..4000000 loop
3 insert into t22 values(i);
4 end loop;
5 end;
6 /

PL/SQL procedure successfully completed.

如果数据库里是已经存在的数据,
那直接create table xxx as select xxx from xxx ;

如果是excel那种外部的数据,
用sqloader工具。
加载更多回复(2)

17,082

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧