Hoffmann: SQL Performance Verbesserung

Beitrag lesen

Hallo zusammen,

ich habe hier ein sehr inperformantes SQl-Script das unter Oracle 10g Release 2 läuft, vielleicht kann mir ja jemand evtl einen Tuning Tip dazu geben, bin für jeden Tip dankbar, das Script läuft momentan sehr langsam und muss schneller werden:

SELECT POH.Id, POH.SupplierName, POH.Id, COM.Name, COM.ClientCode, POH.BuyerOrderRef, POH.SentDate OrderDateTimeFilter, POH.Id, POH.Id, POH.Id, MAX(PRJ.PRJNO), PRH.Name, POH.Id, POH.SentDate DeliveryWish, POH.SentDate Delivery, POH.Id Articlename, POH.Id ArticleSuppNo, POH.Id reasontreatmentfilter

FROM POI LEFT OUTER JOIN PRIPOI ON POI.ID=PRIPOI.POI_IDLEFT OUTER JOIN PRI ON PRIPOI.PRI_ID=PRI.IDLEFT OUTER JOIN PRJ ON PRI.PRJ_ID=PRJ.ID, COM, PRH, PRHCOMPOH, POH

WHERE(POH.ECOSAttributes<268435456
AND POH.DeliveredCom=COM.Id
AND PRH.ID=PRHCOMPOH.PRH_ID
AND POH.ID=PRHCOMPOH.POH_ID
AND{ecos TESTBIT(POH.ECOSAttributes, 1048576, false)
AND NOT POH.SentDate IS NULL
AND((1=1)OR POH.USR_Id=20509 or exists(select 1
from PRHCOMPOH, PRH
where POH.Id=PRHCOMPOH.POH_Id
AND PRH.Id=PRHCOMPOH.PRH_Id
AND PRH.USR_Id=20509))
AND EXISTS(SELECT POI.Id
FROM POI, PRIPOI b
WHERE POH_Id=POH.Id
AND POI.ItemType=0
AND POI.OrderAmount>0
AND b.POI_Id=POI.Id
AND(({fn IFNULL((SELECT SUM(R.ccount)
FROM PRIPOIDNI R
WHERE R.POI_Id=POI.Id), 0))<{fn IFNULL((SELECT SUM(a.ccount)
FROM PRIPOI a
WHERE a.PRI_Id=b.PRI_Id), 0)))
AND POH.ID=POI.POH_ID)
AND(POH.SentDate>='2009-09-01 00:00:00')
GROUP BY POH.Id, POH.SupplierName, COM.Name, COM.ClientCode, POH.BuyerOrderRef, POH.SentDate, PRH.Name
ORDER BY OrderDateTimeFilter DESC