免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1282 | 回复: 1
打印 上一主题 下一主题

请看看这个SQL如何优化,谢谢!! [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2005-04-14 20:02 |只看该作者 |倒序浏览
acc_yqdz表有15万条记录,aaalszb有3万条记录,
但是这个SQL执行完后,用了1个多小时还没有完,
请高手帮忙修改优化一下,多谢!!

update acc_yqdz t4
set t4.a8fse=nvl(t4.a8fse,0)+(
select fse from
(
select
a5sh,a5zh,a8jd,a5dwm,a5gskm,a5bz,a5sh||a5zh||a8jd as yy,sum(a5ye) as ye
from whrept.acc_yqdz
where (substr(a5gskm,1,3) in ('202','205','251')
or substr(a5gskm,1,3) in ('201','221'))
and a5bzh='01'
group by a5sh,a5zh,a8jd,a5dwm,a5gskm,a5bz
) t1,
(
select a8date,a8sh,a8zh,a8jd,a8sh||a8zh||a8jd as dd,sum(a8fse) as fse from aaalszb
where  (substr(a8kmh,1,3) in ('202','205','251')
or substr(a8kmh,1,3) in ('201','221') )
and a8bzh='01'
group by a8date,a8sh,a8zh,a8jd
) t2
where t1.yy=t2.dd
and substr(t1.a5bz,6,1)<>;'2'
and t4.a5sh=t1.a5sh and t4.a5zh=t1.a5zh and t4.a8jd=substr(t1.yy,19,1));

论坛徽章:
0
2 [报告]
发表于 2005-04-15 20:54 |只看该作者

请看看这个SQL如何优化,谢谢!!

这样复杂的SQL语句最好不要写,你有多大的UNDO表空间可以用来扩展。
开玩笑,大致15W*3W的数据量,加上复杂的SQL,回滚还要加倍。

建议:既然你能写出如此复杂的SQL,一定是个PLSQL高手,为什么不建立一个存储过程或者declare开头的程序段,分步执行,每1000条提交一次。速度肯定比你上面一条SQL语句要快。

相信我,我的DSS数据库类似的应用不比你少,用程序控制速度可以快很多。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP