update语句运行了四个小时,请问如何提高效率?

adamdoh 2003-08-22 01:56:28
update FAC_MSERV_DEVELOP_INCOME a set ADD_FINANCE_INCOME_SUM=
(select (a.FINANCE_INCOME_SUM-b.FINANCE_INCOME_SUM)
from FAC_MSERV_DEVELOP_INCOME b
where b.time_id=200306
and a.time_id=200307
and a.exch_id=b.exch_id
and a.SERV_TYPE_ID=b.SERV_TYPE_ID
and a.PROD_ID=b.PROD_ID
and a.CUST_TYPE_ID=b.CUST_TYPE_ID
and a.CUST_GRADE_ID=b.CUST_GRADE_ID
and a.SERV_GRADE_ID=b.SERV_GRADE_ID
and a.CONSUME_GRADE_ID=b.CONSUME_GRADE_ID
and a.INDUS_TYPE_ID=b.INDUS_TYPE_ID
and a.SUB_TYPE_ID=b.SUB_TYPE_ID
)
where exists
(
select b.time_id
from FAC_MSERV_DEVELOP_INCOME b
where b.time_id=200306
and a.time_id=200307
and a.exch_id=b.exch_id
and a.SERV_TYPE_ID=b.SERV_TYPE_ID
and a.PROD_ID=b.PROD_ID
and a.CUST_TYPE_ID=b.CUST_TYPE_ID
and a.CUST_GRADE_ID=b.CUST_GRADE_ID
and a.SERV_GRADE_ID=b.SERV_GRADE_ID
and a.CONSUME_GRADE_ID=b.CONSUME_GRADE_ID
and a.INDUS_TYPE_ID=b.INDUS_TYPE_ID
and a.SUB_TYPE_ID=b.SUB_TYPE_ID
)
...全文
98 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
zjhclf 2003-08-22
  • 打赏
  • 举报
回复
1。考虑将set后面的一大段写成函数。写成set ADD_FINANCE_INCOME_SUM=func(?)
2。看看where条件是否用上了索引,调优
David1289 2003-08-22
  • 打赏
  • 举报
回复
你这个sql语句要优化优化,看能否不要用Exists和嵌套语句
yeahnope 2003-08-22
  • 打赏
  • 举报
回复
可否把里面的部分pl/sql语句转换成 函数,速度可能会快一点。

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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