실행계획 생성하는법

JWJ·2026년 5월 18일

SQL 튜닝

목록 보기
2/4

방법1: 세션 정보 변경후 cursor 출력 (추천)

1) 파라미터 NULL 로 검색하기

ALTER SESSION SET STATISTICS_LEVEL = 'ALL';

SELECT * FROM EMP; -- 2번 실행! -> soft parsing 기준으로 튜닝 기준 판단을 위해

SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY_CURSOR(NULL, NULL, 'ALLSTATS LAST')); -- 인덱스 적용 안함

2) sql id, child number 활용하기

SELECT * 
FROM DEPT
WHERE DEPTNO = 10;

SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY_CURSOR);
  • 아래와 같이 나오는 SQL_ID, child number 파라미터를 활용하여 실행계획을 검색할 수 있다
SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY_CURSOR('akvh5qj3gtkkp', '0', 'ALLSTATS')); 

방법2: 힌트를 사용하기 (비추)

SELECT /*+ GATHER_PLAN_STATISTICS */ * FROM DEPT
WHERE DEPTNO = 10;

방법3: 오래 걸리는 쿼리인 경우

SELECT /*+ PGA_TEST */ * FROM T1 ORDER BY 1;
SELECT X.*
FROM V$SQL S
   , DBMS_XPLAN.DISPLAY_CURSOR(S.SQL_ID, S.CHILD_NUMBER, 'ALLSTATS LAST') X
WHERE S.SQL_TEXT LIKE 'SELECT /*+ PGA_TEST */%';

/*
----------------------------------------------------------------------------------------------------------------------------------
| Id  | Operation          | Name | Starts | E-Rows | A-Rows |   A-Time   | Buffers | Reads  | Writes |  OMem |  1Mem | Used-Mem |
----------------------------------------------------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT   |      |      1 |        |    200 |00:00:31.93 |   15110 |  73251 |  80394 |       |       |          |
|   1 |  SORT ORDER BY     |      |      1 |    500K|    200 |00:00:31.93 |   15110 |  73251 |  80394 |    86M|  3193K|43008  (19|
|   2 |   TABLE ACCESS FULL| T1   |      1 |    500K|    500K|00:00:00.04 |    7916 |      0 |      0 |       |       |          |
----------------------------------------------------------------------------------------------------------------------------------
*/
  • /*+ PGA_TEST */ 와 같이 sql 식별을 위한 간단한 코멘트를 추가한 후에, sql 문 을 기반으로 실행계획을 탐색하는 방법이다

  • 오래 걸리는 sql을 수행할 때, 사용하면 유용할 것 같다

profile
인사이트를 얻고 정리하는 공간입니다

0개의 댓글