ORACLE SQL语句优化问题

qinkm 2003-08-30 03:12:08
我有一个视图,关联了约20个表.这个视图在整个系统中非常重要,因此,使用频率也很高,现在有个问题:我的这个查询,即便结果只有一第记录,也要查很长时间,约30秒左右,现在我的数据库里最大的一张表(所关联的表)记录数也不到20000条,其他表数据都只有几十条...大家能不能给出一些优化SQL的方法?
我已经将SQL语句的WHERE语句,最小的条件放最后了...
...全文
37 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
redarmy_ 2003-11-09
  • 打赏
  • 举报
回复
最根本的问题是数据库的设计不大合理,一个视图要关联20个表?可以在其他表增加冗余;既然这个视图如此常用,也可以改成表,其他表数据变化时更新一下。
hushuangyang 2003-11-08
  • 打赏
  • 举报
回复
数据适量的冗余是有必要的!
“那你代码表怎么用呀,如操作员,在业务表中存的是操作员号,但是在界面上要显示操作员名,这时不就要与操作员表进行关联吧.这时你怎么写?”
在业务表中可以将操作员号和操作员名同时存放。查询的时候就不要关联了。
shuipipi 2003-11-07
  • 打赏
  • 举报
回复
泥的SQL也真能养眼的!:)

能够写出这么多表相关联的SQL语句来,是不是应当回头想想,表结构是不是应当有所改进或者重新设计了?这样的SQL语句,光靠优化SQL好像没什么效果~
aceplus 2003-11-07
  • 打赏
  • 举报
回复
mark 一下,以后学习~~~~~~~~~~
da_peng 2003-11-07
  • 打赏
  • 举报
回复
我原来用10个表建的视图也很慢,将optimizer_search_limit的值增加一倍效率要高多了
Fenng 2003-11-07
  • 打赏
  • 举报
回复
表结构设计的有问题,估计是学院派的人设计的,

不要在数据库中过多的关联表,会累死人的
lilylamb 2003-09-14
  • 打赏
  • 举报
回复
我正在试验
armu80830 2003-09-14
  • 打赏
  • 举报
回复
建议楼主安装一个SQL Expert for Oracle 工具软件,我一般遇到很耗时的sql语句,都由它给我自动优化生成新的sql语句,很了不起的软件。
jpabcd 2003-09-12
  • 打赏
  • 举报
回复
把where条件颠倒一下顺序试试,不知道是用CBO还是RBO,最好用plan看一下!
skyxj 2003-09-06
  • 打赏
  • 举报
回复
设定optimizer_search_limit值看看
刚刚在网上看到的还没有测试
qinkm 2003-08-30
  • 打赏
  • 举报
回复
beckhambobo(beckham) :到哪里去找"oracle erp"呀,我用的是ORACLE8.17.
qinkm 2003-08-30
  • 打赏
  • 举报
回复
那你代码表怎么用呀,如操作员,在业务表中存的是操作员号,但是在界面上要显示操作员名,这时不就要与操作员表进行关联吧.这时你怎么写?
BlueskyWide 2003-08-30
  • 打赏
  • 举报
回复
不理解楼主怎么这么喜欢用"+"?
要知道模糊比较是很费时空的。

感觉是数据库设计时的缺陷。
beckhambobo 2003-08-30
  • 打赏
  • 举报
回复
说一个题外话,oracle erp有万个表,视图也多到数不完,参考他们语句,受益良多
qinkm 2003-08-30
  • 打赏
  • 举报
回复
具体视图SQL语句如下:
SELECT TO_CHAR(A.SELNO) SELNO, A.SECVNO,To_Char(A.SecConFlag) SecConFlag,
C.RName RName, A.RCode RCODE,
QUTVNO, A.COTCODE,D.CotName,
B.TRName TRCODE, A.SEOVNO, To_Char(A.SECCODATE,'YYYY-MM-DD') SECCODATE,
To_Char(A.SECMPDATE,'YYYY-MM-DD') SECMPDATE,
To_Char(A.SECTRDATE,'YYYY-MM-DD') SECTRDATE,To_Char(A.SECFIDATE,'YYYY-MM-DD') SECFIDATE,
To_Char(A.SECPADATE,'YYYY-MM-DD') SECPADATE,To_Char(A.SECENDATE,'YYYY-MM-DD') SECENDATE,
To_Char(A.SECPIDATE,'YYYY-MM-DD') SECPIDATE,To_Char(A.SECCFDATE,'YYYY-MM-DD') SECCFDATE,
A.SECWCODE SECWCODE, A.SECBCODE SECBCODE,
A.SECZSTATUS,A.SECSTATUS,
H.PersonName SECWName,I.DeptName SECBName,
A.SECCCODE,A.SECNAME, E.AREANAME SECERA, A.SECTELP, A.SECFAX,
F.SSNAME SECSETMENT,A.SECACCBANK, A.SECACBANK, A.SECCOTERM,
A.SECRMAK,A.RATEPAYNO,A.CUSTOMER,A.CONTRACTOR,
AME,A.RECTADDR,A.RECTPOSTCODE,A.RECTTEL,A.ARVSTATION,A.SELLERNO,
J.SECSCODE,J.QURCODE QURCODE,O.QURName QURName,
J.TESCODE TESCODE,
J.PAWCODE PAWCODE,K.PAWName PAWName,
J.PRTCODE PRTCODE,L.PrteName PrtName,
J.PRCCODE PRCCODE, J.SECSNAME, J.SECSMODEL,
J.SECSSPEC, J.SECSMETAL SECSMETAL,Q.AlloySortName AlloySortName,
J.SECSSTATUS SECSSTATUS,P.AlloyStateName AlloyStateName,J.SECSQTY,
J.SECSWEGT, J.SECUNSET, J.SECSTAXP, J.SECSPRICE,
J.SECSTAXR, J.SECSMONY, J.SECSALUIPRC, J.SECSSTATION,
J.SECSFATRY SECSFATRY,R.DeptName SECSFATRYNAME,
To_Char(J.SECSDEDATE,'YYYY-MM-DD') SECSDEDATE, J.SECSJQTY,
TORENUM,'0') STORENUM
FROM SEL_SELLCONTRACTMAIN A,SEL_SELLCONTRACTSUB J,
PUB_AlloySort Q,PUB_AlloyState P,
Pub_Deptment R,
PUB_Person H,Pub_Deptment I,PUB_TRANSFERWAY B,
PUB_AREASET E,
SYS_RATIFY C ,PUB_CONTRACTTYPE D,
PUB_SETTLEMENT F,
PUB_PAGEWAY K,PUB_PRICETYPE L,
PUB_QUARTER O
Where (A.SECVNO=J.SECVNO) and A.RCode = C.RCode(+) and A.TRCODE = B.TRCODE(+) and
A.COTCODE = D.COTCODE(+) and A.SECERA = E.AREACODE(+) and
A.SECSETMENT = F.SSCODE(+) and --A.SECACCBANK = G.CODEID(+) and
A.SECWCODE=H.PersonCode(+) and
A.SECBCODE=I.DeptCode(+)
and (J.PAWCODE = K.PAWCODE (+))
and (J.PRTCODE = L.PRTCODE (+))
and (J.QURCODE = O.QURCODE(+))
and (J.SECSMETAL = Q.AlloySortCode(+)) and (J.SECSSTATUS = P.AlloyStateCode(+))
and (J.SECSFATRY = R.DeptCode(+))
表记录大小从FROM语句后依次递减.
qinkm 2003-08-30
  • 打赏
  • 举报
回复
龙飞虎的专栏在哪里?
hrb_qiuyb 2003-08-30
  • 打赏
  • 举报
回复
把你的视图的sql语句拿出来,分析一下语句执行计划,对没走索引的部分观注一下。

另看一下龙飞虎的专栏吧,他正在那讲sql优化呢。
armu80830 2003-08-30
  • 打赏
  • 举报
回复
一言难尽,多查查资料吧
最好将你的详细情况贴出来,请高手们来帮忙
jiezhi 2003-08-30
  • 打赏
  • 举报
回复
只能給你提供一些資料了:
http://www.zdnet.com.cn/developer/code/story/0,2000081534,39128560-1,00.htm
http://tech.sina.com.cn/c/2002-02-25/11339.html
http://www.ccidnet.com/html/tech/guide/2001/12/06/92_3867.html

3,491

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 高级技术相关讨论专区
社区管理员
  • 高级技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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