Egal написал:
Селект в обеих системах один и тот же:
Code:
SELECT TLINE TABSEQNR FROM HRP1002 AS P
INNER JOIN HRT1002 AS T ON P~TABNR = T~TABNR
INTO CORRESPONDING FIELDS OF TABLE lt_hrline
WHERE OTYPE = 'C' AND BEGDA <= i_date AND ENDDA >= i_date AND objid = i_STELL
ORDER BY TABSEQNR.
В выложенном AWR вижу, что проблема все же не в CPU, а чтениях из буферного кэша:
Code:
db file sequential read 48.7
DB CPU 46.6
и если искать в ТОПах запрос который дает наибольший вклад в эти ожидания то мы видим запрос с sql_id 6m50v0x5g9mrq и в топе по времени выполнения и в топе по пользовательскому IO. Собственно ADDM на 94 странице и рекомендует начать оптимизацию с этого запроса:
Code:
SELECT DISTINCT "MANDT", "BUKRS", "KUNNR", "UMSKS", "UMSKZ", "AUGDT", "AUGBL", "ZUONR", "GJAHR", "BELNR", "BUZEI", "BUDAT", "BLDAT", "CPUDT", "WAERS", "XBLNR", "BLART", "MONAT", "BSCHL", "ZUMSK", "SHKZG", "GSBER", "MWSKZ", "DMBTR", "WRBTR", "MWSTS", "WMWST", "BDIFF", "BDIF2", "SGTXT", "PROJN", "AUFNR", "ANLN1", "ANLN2", "SAKNR", "HKONT", "FKONT", "FILKD", "ZFBDT", "ZTERM", "ZBD1T", "ZBD2T", "ZBD3T", "ZBD1P", "ZBD2P", "SKFBT", "SKNTO", "WSKTO", "ZLSCH", "ZLSPR", "ZBFIX", "HBKID ", "BVTYP", "REBZG", "REBZJ", "REBZZ", "SAMNR", "ANFBN", "ANFBJ", "ANFBU", "ANFAE", "MANSP", "MSCHL", "MADAT", "MANST", "MABER", "XNETB", "XANET", "XCPDD", "XINVE", "XZAHL", "MWSK1", "DMBT1", "WRBT1", "MWSK2", "DMBT2", "WRBT2", "MWSK3", "DMBT3", "WRBT3", "BSTAT", "VBUND", "VBELN", "REBZT", "INFAE", "STCEG", "EGBLD", "EGLLD", "RSTGR", "XNOZA", "VERTT", "VERTN", "VBEWA", "WVERW", "PROJK", "FIPOS", "NPLNR", "AUFPL", "APLZL", "XEGDR", "DMBE2", "DMBE3", "DMB21", "DMB22", "DMB23", "DMB31", "DMB32", "DMB33", "BDIF3", "XRAGL", "UZAWE", "XSTOV", "MWST2", "MWST3", "SKNT2", "SKNT3", "XREF1", "XREF2", "XARCH", "PSWSL", "PSWBT", "LZBKZ", "LANDL", "IMKEY", "VBEL2", "VPOS2", "POSN2", "ETEN2", "FISTL", "GEBER", "DABRZ", "XNEGP", "KOSTL", "RFZEI", "KKBER", "EMPFB", "PRCTR", "XREF3", "QSSKZ", "ZINKZ", "DTWS1", "DTWS2", "DTWS3", "DTWS4", "XPYPR", "KIDNO", "ABSBT", "CCBTC", "PYCUR", "PYAMT", "BUPLA", "SECCO", "CESSION_KZ", "PPDIFF", "PPDIF2", "PPDIF3", "KBLNR", "KBLPOS", "GRANT_NBR", "GMVKZ", "SRTYPE", "LOTKZ", "FKBER", "INTRENO", "PPRCT", "BUZID", "AUGGJ", "HKTID", "BUDGET_PD", "PAYS_PROV", "PAYS_TRAN", "MNDID", "KONTT", "KONTL", "UEBGDAT", "VNAME", "EGRUP", "BTYPE", "PROPMANO" FROM "BSAD" WHERE "MANDT"=:A0 AND "KUNNR" IN (:A1) AND "BUKRS"=:A2 AND "BUDAT"<=:A3 AND "HKONT" LIKE :A4 AND ("UMSKZ"=:A5 OR "UMSKZ"=:A6) AND "ZINKZ"=:A7
Если вы все-таки хотите пооптимизировать ваш конкретный запрос, то нужно найти его sql_id, child_number и на проде и на тесте
Code:
select sql_id,child_number,sql_text from v$sql where upper(sql_text) like '%SELECT DISTINCT "MANDT", "BUKRS", "KUNNR", "UMSKS""%'
а затем вытащить реальные планы выполнения запросом:
Code:
select * from table(dbms_xplan.display_cursor(ваш sql_id', ваш child_number));
тут уже можно будет и посравнивать