在oracle性能问题中选择Insert

时间:2016-11-02 09:38:44

标签: sql oracle

我正在使用简单的选择插入方法在SQL Query中执行数据迁移

我没有得到下面提到的2个查询在同一数据集上执行相同任务的性能差异的原因。

我正在使用下面的查询,这是无限的(72小时后工作被杀)持续时间完成,SELECT表上没有索引

INSERT INTO X (A,B,C,D,E,F,G)
 SELECT 'ORSTX',
      'ORGX_LVL_1',
      CONCAT ('NC_CAT_GL_COM_VAL_', MAP.AUTO_ID),
      CONCAT ('CAT_GL_SCOPE_', MAP.AUTO_ID),
      MAP.SYSTEM,
      REF.COMPANY_CODE,
      1
 FROM TEMP_CAT_GL_BU MAP
         JOIN TEMP_CAT_GL REF ON MAP.CODE  = REF.CODE
 WHERE MAP.SYSTEM = 'ABCD'
      AND REF.SYSTEM = 'ABCD';

而下面的查询是在有限(可接受)时间内完成的

 INSERT INTO X (A,B,C,D,E,F,G)
   SELECT A,B,C,D,E,F,G FROM (SELECT 'ORSTX',
      'ORGX_LVL_1' AS A,
      CONCAT ('NC_CAT_GL_COM_VAL_', MAP.AUTO_ID) AS B,
      CONCAT ('CAT_GL_SCOPE_', MAP.AUTO_ID)AS C,
      MAP.SYSTEM AS D,
      REF.COMPANY_CODE AS E,
      1 AS F,
      MAP.AUTO_ID AS G
   FROM TEMP_CAT_GL_BU MAP
         JOIN TEMP_CAT_GL REF ON MAP.CODE  = REF.CODE
   WHERE MAP.SYSTEM = 'ABCD'
      AND REF.SYSTEM = 'ABCD'
   ORDER BY MAP.AUTO_ID);

0 个答案:

没有答案