救命呀??高手看看查询语句如何写??按照视图写的程序巨慢!!

whxxr 2006-05-22 01:49:59
drop view qv_grjbqk
/
create VIEW qv_grjbqk (dwdm,grdm,xm,sfzid,khrq,jjbl,bglx,yje,dwname,dwlx,ye,jzny,endjjrq) as
select a.dwdm,a.grdm,a.xm,a.sfzid,a.khrq,c.jjbl,b.bglx,c.gryje+c.dwyje+c.czyje as yje,d.dwname,d.dwlx,
(select nvl(sum(m.srje),0) - nvl(sum(m.zcje),0)
from q_grmx m
where m.dwdm=a.dwdm and m.grdm=a.grdm and (m.zjzl='01' or m.zjzl='02' and m.srje>0)
) as ye ,
( select max(n.jjny) from q_grmx n where n.dwdm=a.dwdm and n.grdm=a.grdm
) as jzny,
( select max(o.jxdate) from q_grmx o where o.dwdm=a.dwdm and o.grdm=a.grdm and o.zjzl='01' and o.srje>0
) as endjjrq
from q_grxx a,q_grxx_ztbginfo b,q_grxx_gzjsbginfo c,q_wldw d
where a.dwdm=b.dwdm and a.dwdm=c.dwdm and a.dwdm=d.dwdm and a.grdm=b.grdm and a.grdm=c.grdm and
b.bgdate=(select max(e.bgdate) from q_grxx_ztbginfo e where e.dwdm=a.dwdm and e.grdm=a.grdm) and
c.bgdate=(select max(f.bgdate) from q_grxx_gzjsbginfo f where f.dwdm=a.dwdm and f.grdm=a.grdm)
/

上面的是视图的SQL语句。Q_GRXX为30来万条记录,Q_GRXX_ZTBGINFO不到20万吧。Q_WLDW记录3600来条,Q_GRXX_GZJSGINFO也是30来万条,大于Q_GRXX表中的记录,Q_GRMX的记录为700来万条.要求将视图里面的数据写成文本文件.
他是按照单位导的.里面有运算的字段,我算了一下,如果一个单位有4000条的记录要运行5个小时.文件大概要2分钟才增长8K,如果单位记录少的话运行速度很快,文件的增长也很快.10000条记录的大小要3M多,有4分钟就运行完了,按20万人的话有1个半小时就运行完了.


高手们给支个招吧,看看单位记录多的如何使速度运行快.

机器配置:P4 2.93 CPU,1G 内存

请各位高手帮帮忙呀?保证给分!!!
...全文
150 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
多壮志 2006-05-23
  • 打赏
  • 举报
回复
可以按照kingofworl的来做。
kingofworl 2006-05-22
  • 打赏
  • 举报
回复
oracle的UTL_FILE包 方便,但效率不如spool
pollipop 2006-05-22
  • 打赏
  • 举报
回复
分析:
1:你的txt文件写服务器还是本地
2:如果你的文件写服务器的话,建议采用后台写(采用oracle的UTL_FILE包),速度是很快的
3:如果是写本地的话,那就看你用什么方式写了哦!但从数据库查询的速度应该得到保证(可以加索引,但对于取出较多数据,如30万取1万时,数据库是不会采用索引的)

17,086

社区成员

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

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