SQL的优化

[复制链接]
查看11 | 回复5 | 2006-9-7 17:01:08 | 显示全部楼层 |阅读模式
以下SQL用时竟达到了26分钟,可不可以优化以下,麻烦大家帮帮忙。
----------------------------------------------------------
UPDATE

DT_AACC_RST1

SET

(ACC_RST1.BEF_RESALE_TRIP_ID,

ACC_RST1.BEF_RESALE_TRIPREN,

ACC_RST1.BEF_RESALE_TRIP_ORDER)

= (SELECT

ACC_RST2.TRIP_ID,

ACC_RST2.TRIPREN,

ACC_RST2.TRIP_ORDER

FROM

DT_A
ACC_RST2

WHERE

ACC_RST2.IN_DATE_TIME =

(SELECT

MAX(ACC_RST3.IN_DATE_TIME)

FROM

DT_A
ACC_RST3

WHERE

ACC_RST3.IN_DATE_TIME'1'


AND
ACC_RST3.SUBTYPE = '01'

)

AND ACC_RST2.CANCEL_FLAG'1'


AND ACC_RST2.LORRY_TRAILER_CODE = ACC_RST1.LORRY_TRAILER_CODE

AND ACC_RST2.SUBTYPE = '01'


AND ROWNUM = 1

)

WHERE
ACC_RST1.CANCEL_FLAG'1'

ANDACC_RST1.SUBTYPE = '02'

ANDACC_RST1.STATUS9

ANDEXISTS (SELECT 1

FROM

DT_A_TEMP ACC_RST_TEMP

WHERE ACC_RST1.TRIP_ID = ACC_RST_TEMP.TRIP_ID


AND ACC_RST1.TRIP_ORDER = ACC_RST_TEMP.TRIP_ORDER

);
回复

使用道具 举报

千问 | 2006-9-7 17:01:08 | 显示全部楼层
26分钟挺正常的,有多少条记录?尝试在每个用到的字段都建索引吧。。。。
回复

使用道具 举报

千问 | 2006-9-7 17:01:08 | 显示全部楼层
将select的结果集先存储到临时表里,然后再执行update
如果要调优,起码也得把执行计划贴上来看看啊
回复

使用道具 举报

千问 | 2006-9-7 17:01:08 | 显示全部楼层
sql能否格式化下!
是否有索引,数据量怎么样!
回复

使用道具 举报

千问 | 2006-9-7 17:01:08 | 显示全部楼层
对呀,这个语句跑多长时间都是有可能,把计划贴出来
回复

使用道具 举报

千问 | 2006-9-7 17:01:08 | 显示全部楼层
最好不要用,然后建立函数所引吧
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行