首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >插入占用更多时间插入

插入占用更多时间插入
EN

Stack Overflow用户
提问于 2014-11-05 07:08:24
回答 1查看 48关注 0票数 0

对于所有的插入,需要更多的时间来插入am,在应用程序支付表中只有4000行。有没有办法优化我的代码

代码语言:javascript
复制
DECLARE
   TYPE PAY_TAB_REC IS RECORD (
      PAYMENT_ID           NUMBER,
      PAYMENT_TYPE_ID      NUMBER,
      AMOUNT               NUMBER,
      PAYMENT_DATE         DATE,
      CREATED_DATE         DATE,
      CREATED_BY           NUMBER,
      PAYMENT_RECEIPT_NO   VARCHAR2 (20),
      MODIFIED_BY          NUMBER,
      MODIFIED_DATE        DATE,
      PAYEE_ID             NUMBER (10),
      PAYER_ID             NUMBER (10),
      IS_URGENT            NUMBER (1)    DEFAULT 0,
      APP_ID               NUMBER
   );

   TYPE PAY_TAB_TYPE IS TABLE OF PAY_TAB_REC
      INDEX BY PLS_INTEGER;

   PAY_TAB   PAY_TAB_TYPE;

   CURSOR C_APP
   IS
      SELECT SEQ_PAYMENT.NEXTVAL PAYMENT_ID, PAYMENT_TYPE_ID, AMOUNT,
             PAYMENT_DATE, CREATED_DATE, CREATED_BY, PAYMENT_REF_NO,
             MODIFIED_BY, MODIFIED_DATE, PAYEE_ID, PAYER_ID, IS_URGENT,
             APP_ID
        FROM APPLICATION_PAYMENT;
BEGIN
   OPEN C_APP;

   LOOP
      FETCH C_APP
      BULK COLLECT INTO PAY_TAB LIMIT 100;

      FORALL I IN 1 .. PAY_TAB.COUNT
         INSERT INTO PAYMENT
              VALUES PAY_TAB (I);
   END LOOP;

   CLOSE C_APP;

   COMMIT;
END;

从application_payment表中选择值并插入到支付表中。但它需要更多的时间和循环运行,没有尽头。帮助我在application_payment表中只有78000张记录。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-11-05 07:18:12

您可以使用select insert而不是循环

代码语言:javascript
复制
INSERT INTO PAYMENT
 SELECT SEQ_PAYMENT.NEXTVAL PAYMENT_ID, PAYMENT_TYPE_ID, AMOUNT,
             PAYMENT_DATE, CREATED_DATE, CREATED_BY, PAYMENT_REF_NO,
             MODIFIED_BY, MODIFIED_DATE, PAYEE_ID, PAYER_ID, IS_URGENT,
             APP_ID
        FROM APPLICATION_PAYMENT;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26751510

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档