加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长百科 > 正文

oracle11g – 在Oracle中插入一百万行的最将近领

发布时间:2021-03-14 01:24:45 所属栏目:站长百科 来源:网络整理
导读:怎样故最佳方法在Oracle中插入高出一百万行以用于以下进程?假如我将FOR轮回增进到一百万行,它会挂起. create or replace procedure inst_prc1 as xssn number; xcount number; l_start Number; l_end Number; cursor c1 is select max(ssn)S1 from dtr_debt

怎样故最佳方法在Oracle中插入高出一百万行以用于以下进程?假如我将FOR轮回增进到一百万行,它会挂起.

create or replace procedure inst_prc1 as
   xssn number;
   xcount number;
   l_start Number;
   l_end Number;
   cursor c1 is select max(ssn)S1 from dtr_debtors1;

Begin
  l_start := DBMS_UTILITY.GET_TIME;
  FOR I IN 1..10000 LOOP
    For C1_REC IN C1 Loop
      insert into dtr_debtors1(SSN) values (C1_REC.S1+1);
    End loop;
  END LOOP;
  commit;
  l_end := DBMS_UTILITY.GET_TIME;
  DBMS_OUTPUT.PUT_LINE('The Procedure  Start Time is '||l_start);
  DBMS_OUTPUT.PUT_LINE('The Procedure End Time is '||l_end); 
End inst_prc1;

办理要领

您的要领将导致内存题目.最快的方法是[在大卫的评述后编辑查询以处理赏罚空方案]:

insert into dtr_debtors1(SSN)
select a.S1+level
   from dual,(select nvl(max(ssn),0) S1 from dtr_debtors1) a
connect by level <= 10000

选择插入是最快的要领,由于全部内容都保存在RAM中.
假云云查询进入全局姑且地区可是必要举办数据库调解,则此查询也许会变慢.我以为没有比这更快的对象了.

有关Query行使内存的更多细节:

每个查询都有本身的PGA [措施全局地区],根基上每个查询都可以行使RAM.假如这个地区不敷以返回查询功效,则SQL引擎开始行使Golabl姑且表空间,就像硬盘一样,查询开始变慢.假如查询所需的数据太大,纵然姑且地区不足,那么您将会呈现表空间错误.

以是老是计划查询,以便它保持在PGA,不然它是一个红旗.

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读