SQL变慢的原因

[复制链接]
查看11 | 回复9 | 2014-2-19 11:55:14 | 显示全部楼层 |阅读模式
一条复杂SQL,看执行计划,耗费成本才1446,平常很快就查出结果了,这几天,慢得要死,最快也得三分钟,不知道是什么原因??? 优化的话,要从哪入手???

回复

使用道具 举报

千问 | 2014-2-19 11:55:14 | 显示全部楼层
是不是系统这几天上班了很繁忙而前几天还在春节放假所以很闲?
回复

使用道具 举报

千问 | 2014-2-19 11:55:14 | 显示全部楼层
本帖最后由 fuyinzhen 于 2012-2-2 17:01 编辑
看看表自身查询速度咋样

回复

使用道具 举报

千问 | 2014-2-19 11:55:14 | 显示全部楼层
fuyinzhen 发表于 2012-2-2 17:01
看看表自身查询速度咋样

select * from XXX
回复

使用道具 举报

千问 | 2014-2-19 11:55:14 | 显示全部楼层
春节之前一直都用得好好的. 是节后操作人员才反映慢的. 做了10046,AWR跟踪,都显示有比较高的硬盘读,逻辑读
回复

使用道具 举报

千问 | 2014-2-19 11:55:14 | 显示全部楼层
accphaijiang 发表于 2012-2-2 17:02
select * from XXX

单个表这种方式查询,用全表扫描;现在的查询用好多个表,视图. 总的执行成本1440,以往也是这样的执行计划,但速度很快,现在变慢了;不知道 问题出在哪里??

回复

使用道具 举报

千问 | 2014-2-19 11:55:14 | 显示全部楼层
把SQL贴出来看看
回复

使用道具 举报

千问 | 2014-2-19 11:55:14 | 显示全部楼层
SELECT

'[' || Table5.OPTNO || ']' || Table5.OPTNAME Expr4,

Table1.PLUNO PLUNO,

Table1.PLUNAME PLUNAME,

NVL(A.QTY,0) AS QTY,

Table1.SPEC SPEC,

Table1.PKUNIT PKUNIT,

Table1.PKQTY PKQTY,

Table1.COMNO COMNO,

Table4.BCDBCD,

Case When NVL(Table13.RSLPRC,0)Table3.SLPRCAnd NVL(Table13.RSLPRC,0) >0 ThenTable13.RSLPRC

When NVL(Table13.MMSLPRC,0)Table3.SLPRC And NVL(Table13.MMSLPRC,0)>0 Then Table13.MMSLPRC

Else 0.00 End MRSLPRC,

Table3.SLPRC SLPRC,

Table3.WHSLPRC WHSLPRC,

Table3.ASLPRC ASLPRC,

TABLE1.DISRATE,

Table3.VLDPSN VLDPSN,

Table3.VLDDAT VLDDAT,

TABLE1.CONRAT CONRAT,

Table3.STRPRC STRPRC,

TABLE8.BLCNO BLCNO,

Table4.PROD PROD,

'['||Table6.STANO||']'||Table6.STANAME As STANO,

case whenTABLE3.OPNPRC=1 then 'Y' else 'N' endASOPNPRC ,

'[' || Table2.DPTNO || ']' || Table2.DPTNAME Expr1,

'[' || Table89.DPTNO || ']' || Table89.DPTNAME SXDPT,

Table1.FSHNO FSHNO,

Table3.VALID VALID,

Table1.PLUID PLUID,

Table1.PLUID PLUIDBAK,

Table1.PID PID,

trunc(case when table3.slprc = 0 then 0 else (table3.slprc-table14.csprc)*100 / table3.slprc end,2)||'%' as slntamt
FROMBASPLUPRC Table3, BASDEPT Table2,BSASTA Table6,
BASPLUMAIN Table1
Left Outer Join (select pluid,max(rslprc) as rslprc ,max(mmslprc) as mmslprc from vwmmxplu_SLPRC group by pluid) Table13
On(Table1.PLUID=Table13.PLUID)
left outer join(SELECT PLUID,SUM(QTY) AS QTY FROM FINSTOCKSHPQTY GROUP BY PLUID )AON TABLE1.PLUID = A.PLUID
left outer join BASCOMMAIN CC ON Table1.COMNO = CC.COMNO
left join vwdoc70plu table14 on table1.pluid=table14.pluid and table1.doc70no=table14.docno,
(select OPTID, OPTNO, OPTNAME from BASOPT where OPTID in (4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,
27,28,29,30,102,31,61,33,41,121,1 )) Table5,
(selectPLUID,MAX(BCD) AS BCD,MAX(PROD) AS PROD from BASPLUBCD where 1=1 Group By PLUID) Table4,
BASPLUEXT TABLE8 Left Outer Join VWSXDPTTable89 On Table8.MAXORDQTY=Table89.DPTID
WHERE(Table1.DPTID = Table2.DPTID AND Table3.PLUID = Table1.PLUID
AND Table1.PLUID = Table4.PLUID AND Table1.OPTID = Table5.OPTIDAND TABLE1.PLUID = TABLE8.PLUID
And Table1.STAID=Table6.Staid ) And( table1.staid != 5 And cc.COMID = 3341)
ORDER BY PLUNO
回复

使用道具 举报

千问 | 2014-2-19 11:55:14 | 显示全部楼层
同样的执行计划,在不同库上,执行成本差不多,但响应时间相差好几分钟;一个马上出结果,一个耗三五分钟,这是什么原因???
回复

使用道具 举报

千问 | 2014-2-19 11:55:14 | 显示全部楼层
响应时间,还有其他因数
数据量多大,结果集多大?
负载如何?
回复

使用道具 举报

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

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行