오라클 10g부터 gather_plan_statistics 힌트를 이용하면 SQL Trace를 수행하지 않고도 Query의 Plan 단계별 일량(Actual+Estimated Rows을 포함한)을 알 수 있다고 한다.
다음과 같이 사용하면 된다.
1. 쿼리 수행시 gather_plan_statistics 힌트를 사용
예) SELECT /*+ gather_plan_statistics */ /* SEEIN */ * FROM Table;
2. v$sql에서 sql_id, child_number 확인
예) SELECT sql_id, child_number
FROM v$sql
WHERE sql_text LIKE '%SEEIN%' ;
3. DBMS_XPLAN을 이용하여 실행 결과 확인
SELECT * FROM table(DBMS_XPLAN.DISPLAY);
SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY_CURSOR(NULL,NULL,'ALLSTATS LAST'));
SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY_CURSOR(sql_id, child_number, 'ALLSTATS LAST'));
SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY_CURSOR(sql_id, child_number, 'RUNSTATS_LAST')); -- 10g
다음과 같이 사용하면 된다.
1. 쿼리 수행시 gather_plan_statistics 힌트를 사용
예) SELECT /*+ gather_plan_statistics */ /* SEEIN */ * FROM Table;
2. v$sql에서 sql_id, child_number 확인
예) SELECT sql_id, child_number
FROM v$sql
WHERE sql_text LIKE '%SEEIN%' ;
3. DBMS_XPLAN을 이용하여 실행 결과 확인
SELECT * FROM table(DBMS_XPLAN.DISPLAY);
SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY_CURSOR(NULL,NULL,'ALLSTATS LAST'));
SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY_CURSOR(sql_id, child_number, 'ALLSTATS LAST'));
SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY_CURSOR(sql_id, child_number, 'RUNSTATS_LAST')); -- 10g