1、經過db file sequential read,獲得SQL——話說業務部門說一個小時都沒有結果html
SELECT TA.MRID, TA.GDID, TB.GDNAME, TB.CATID, TB.BARCODE, TA.SUPID||' '||Nvl(TD.SUPNAME,'未知') SUPIDNAME, TB.PPID, SUM(TA.D_XSSL) XSSL, SUM(TA.D_XSJE) XSJE, SUM(TA.D_HSJE) HSJE FROM SEL_GDIDDAYTOTAL TA, ALY_GOODSBASE TB, ALY_CATTYPE TC, ALY_SUPPLIERBASE TD WHERE TA.RQ>=TO_DATE(:v_ksrq,'YYYY-MM-DD') AND TA.RQ< TO_DATE(:v_jsrq,'YYYY-MM-DD')+1 AND TA.GDID=TB.GDID AND TC.CATID=TB.CATID AND TC.CATID LIKE '%%' AND TC.IS_MANAGERCAT='Y' AND TA.SUPID=TD.SUPID GROUP BY TA.MRID, TA.GDID, TB.GDNAME, TB.CATID, TB.BARCODE, TA.SUPID||' '||Nvl(TD.SUPNAME,'未知'), TB.PPID
2、查看執行計劃:(開發給的,dba絕對不會用F5)code
SELECT STATEMENT,GOAL = RULE SORT GROUP BY FILTER NESTED LOOPS NESTED LOOPS NESTED LOOPS TABLE ACCESS FULL【ALY_CATTYPE】 TABLE ACCESS BY INDEX ROWID【ALY_GOODSBASE】 INDEX RANGE SCAN【IDX_ALY_GOODSBASE】 VIEW UNION-ALL PARTITION FILTER TABLE ACCESS BY INDEX ROWID【MC_00.SEL_GDIDDAYTOTAL】 INDEX RANGE SCAN【MC_01.PK_SEL_GDIDDAYTOTAL】 FILTER TABLE ACCESS BY INDEX ROWID【MC_01.SEL_GDIDDAYTOTAL】 INDEX RANGE SCAN【MC_01.PK_SEL_GDIDDAYTOTAL】 ... FILTER TABLE ACCESS BY INDEX ROWID【MC_50.SEL_GDIDDAYTOTAL】 INDEX RANGE SCAN【MC_50.PK_SEL_GDIDDAYTOTAL】
表:ALY_GOODSBASE—— 10W條;htm
SEL_GDIDDAYTOTAL這是視圖;blog
基本上可以定位問題了:開發
①同層級的filter;file
②多層NL;filter
③index range scan(單塊讀)db
典型的SQL語句垃圾致使的。di
經過改寫SQL,秒出dba
SELECT TA.MRID, TA.GDID, TB.GDNAME, TB.CATID, TB.BARCODE, TA.SUPID||' '||Nvl(TD.SUPNAME,'未知') SUPIDNAME, TB.PPID, SUM(TA.D_XSSL) XSSL, SUM(TA.D_XSJE) XSJE, SUM(TA.D_HSJE) HSJE FROM (SELECT Mrid,Gdid,Supid, SUM(D_XSSL) D_XSSL, SUM(D_XSJE) D_XSJE, SUM(D_HSJE) D_HSJE FROM SEL_GDIDDAYTOTAL WHERE RQ BETWEEN TO_DATE(:v_ksrq,'YYYY-MM-DD') AND TO_DATE(:v_jsrq,'YYYY-MM-DD') GROUP BY Mrid,Gdid,Supid) TA, ALY_GOODSBASE TB, ALY_CATTYPE TC, ALY_SUPPLIERBASE TD WHERE TA.GDID =TB.GDID AND TC.CATID=TB.CATID AND TC.IS_MANAGERCAT='Y' AND TA.SUPID=TD.SUPID GROUP BY TA.MRID, TA.GDID, TB.GDNAME, TB.CATID, TB.BARCODE, TA.SUPID||' '||Nvl(TD.SUPNAME,'未知'), TB.PPID
原文見:http://blog.sina.com.cn/s/blog_546147830100a2df.html
此博主的分析過程符合DBA排查過程,同時博主的SQL改寫能力確實不錯,不過嘛,博主應該是個搞開發的,能這樣去排查問題,確實很牛逼。