我們有一個簡單的查詢即將運行。我可以說超過10個小時。事實表有170多億行。有關改進以下查詢性能的任何建議或最佳做法?針對長時間運行的查詢的建議
SELECT
/*+ parallel(f 4) */
F.DM_CUSTOMER_DKEY,
P.PRODUCT_YEAR,
SUM(F.ADVG_COST_ACTUALS) advg_cost_actuals
FROM DM_CUST_RENEWAL_ADV_FACT F
INNER JOIN DM_PRODUCT_HIERARCHY p
ON F.DM_PRODUCT_HKEY = P.DM_PRODUCT_HKEY
GROUP BY F.DM_CUSTOMER_DKEY,
P.PRODUCT_YEAR
ORDER BY P.PRODUCT_YEAR
這裏是計劃
OPERATION OBJECT_NAME OPTIONS COST PARTITION_START PARTITION_STOP
SELECT STATEMENT 10931402
PX COORDINATOR
PX SEND :TQ10005 QC (ORDER) 10931402
SORT ORDER BY 10931402
PX RECEIVE 10931402
PX SEND :TQ10004 RANGE 10931402
SORT GROUP BY 10931402
PX RECEIVE 10931402
PX SEND :TQ10003 HASH 10931402
SORT GROUP BY 10931402
HASH JOIN 1964410
Access Predicates
F.DM_PRODUCT_HKEY=P.DM_PRODUCT_HKEY
PX RECEIVE 335
PX SEND :TQ10002 BROADCAST 335
VIEW index$_join$_002 335
HASH JOIN BUFFERED
Access Predicates
ROWID=ROWID
PX RECEIVE 136
PX SEND :TQ10000 HASH 136
PX
BLOCK
ITERATOR 136
INDEX DM_PRODUCT_HIERARCHY_PK FAST FULL
SCAN
136
PX RECEIVE 280
PX SEND :TQ10001 HASH 280
PX
BLOCK
ITERATOR 280
INDEX DM_PRODUCT_HIERARCHY_LPK FAST FULL
SCAN
280
PX BLOCK ITERATOR 1878718 1 369
TABLE ACCESS DM_CUST_RENEWAL_ADV_FACT FULL 1878718 1 369
不幸的是,這不是那麼容易:發佈查詢是不夠的信息來幫助你。 –
執行計劃?有沒有DM_CUST_RENEWAL_ADV_FACT的索引。 DM_PRODUCT_HKEY? –
那麼,你可以開始思考添加一個篩選器到您的查詢。或者你真的需要爲整個事實表彙總這些值? (如果是這樣的話,你應該爲此考慮一個OLAP解決方案) – Lamak