使用相同的表做比对后UPDATE,执行非常的慢

LLJ_LILONGJIAN 2017-12-27 02:22:46
以下语句执行很慢,请问那位大牛帮忙看看,谢谢大家!
--前一个航班的降落时刻,航线,起飞城市,降落城市
UPDATE TMP_ET_TASK A
SET (PRIOR_DOWN_TIME
,PRIOR_FLIGHT_NO
,PRIOR_DOWN_CITY
,PRIOR_UP_CITY
,PRIOR_TASK_KIND
,PRIOR_TASK_ID) =
(SELECT B.LAG_DOWN_TIME
,B.LAG_FLIGHT_NO
,B.LAG_DOWN_CITY
,B.LAG_UP_CITY
,B.LAG_TASK_KIND
,B.LAG_TASK_ID
FROM V_TMP_ET_TASK_LAG B
WHERE B.TASK_ID = A.TASK_ID AND
B.MAN_ID = A.MAN_ID AND
ROWNUM = 1);

视图V_TMP_ET_TASK_LAG:
CREATE OR REPLACE VIEW V_TMP_ET_TASK_LAG AS
SELECT TASK_ID,MAN_ID,MAN_NAME, FACT_UP_TIME,FACT_DOWN_TIME, LINE_CODE, DOWN_CITY_name,
LAG(FLIGHT_NO) OVER(PARTITION BY MAN_ID ORDER BY FACT_UP_TIME) AS LAG_FLIGHT_NO,
LAG(FACT_DOWN_TIME) OVER(PARTITION BY MAN_ID ORDER BY FACT_UP_TIME) AS LAG_DOWN_TIME,
LAG(UP_CITY_name) OVER(PARTITION BY MAN_ID ORDER BY FACT_UP_TIME) AS LAG_UP_CITY,
LAG(DOWN_CITY_name) OVER(PARTITION BY MAN_ID ORDER BY FACT_UP_TIME) AS LAG_DOWN_CITY,
LAG(TASK_KIND) OVER(PARTITION BY MAN_ID ORDER BY FACT_UP_TIME) AS LAG_TASK_KIND,
LAG(TASK_ID) OVER(PARTITION BY MAN_ID ORDER BY FACT_UP_TIME) AS LAG_TASK_ID
FROM TMP_ET_TASK T;
...全文
194 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
sxq129601 2017-12-29
  • 打赏
  • 举报
回复
因为你没加WHERE条件呀,相当于全表都更新了一遍
碧水幽幽泉 2017-12-27
  • 打赏
  • 举报
回复
试试这个:

UPDATE TMP_ET_TASK A
       SET (PRIOR_DOWN_TIME
          ,PRIOR_FLIGHT_NO
          ,PRIOR_DOWN_CITY
          ,PRIOR_UP_CITY
          ,PRIOR_TASK_KIND
          ,PRIOR_TASK_ID) =
           (SELECT B.LAG_DOWN_TIME
                  ,B.LAG_FLIGHT_NO
                  ,B.LAG_DOWN_CITY
                  ,B.LAG_UP_CITY
                  ,B.LAG_TASK_KIND
                  ,B.LAG_TASK_ID
              FROM V_TMP_ET_TASK_LAG B
             WHERE B.TASK_ID = A.TASK_ID AND
                   B.MAN_ID = A.MAN_ID AND
                   ROWNUM = 1)
WHERE EXISTS(  SELECT NULL 
              FROM V_TMP_ET_TASK_LAG B
             WHERE B.TASK_ID = A.TASK_ID AND
                   B.MAN_ID = A.MAN_ID AND
                   );

17,086

社区成员

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

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