기술 정보
home
채널 소개
home

DBMS_XPLAN DISPLAY_CURSOR 옵션 - precise 사용 시 출력 형식 변화

문서 유형
기술 정보
분야
튜닝
키워드
DISPLAY_CURSOR
PRECISE
적용 제품 버전
6FS07PS
7FS02PS

개요

Tibero에서 DBMS_XPLAN.DISPLAY_CURSOR는 실행된 SQL의 실행 계획을 분석하고 출력해주는 유용한 도구입니다.
이 도구는 FORMAT 옵션에 따라 출력 형식이 달라지며, 특히 precise 옵션은 실행 통계의 정확도를 높이는 데 활용됩니다.
본 게시글에서는 precise 옵션의 사용 여부에 따라 CARDS 및 ROWS 컬럼의 출력값에 어떤 차이가 발생하는지, 그리고 그 반올림 기준은 어떻게 적용되는지를 실험을 통해 분석합니다.

방법

테스트 환경 설정

DROP TABLE TEST; CREATE TABLE TEST ( c1_340557 NUMBER, c2_340557 VARCHAR(200), c3_340557 VARCHAR2(200), c4_340557 NCHAR(20), c5_340557 NVARCHAR2(200), c6_340557 NUMBER, c7_340557 CHAR(20), c8_340557 INTEGER, c9_340557 FLOAT, c10_340557 BINARY_FLOAT, c11_340557 NUMBER, c12_340557 DATE, c13_340557 TIMESTAMP ); INSERT INTO TEST SELECT LEVEL, NVL(CHR(96 + MOD(LEVEL,32)) || CHR(97 + MOD(LEVEL,32)),'za'), DECODE(MOD(LEVEL,4), 0, '10', 1, '20', 2, '30', '40'), TO_CHAR(LEVEL), TO_CHAR(LEVEL || CHR(96 + MOD(LEVEL,32))), MOD(LEVEL,10), 'TESTCOL', LEVEL, ROUND(LN(LEVEL), 5), ROUND(LOG(2, LEVEL), 3), LEVEL, TO_DATE('2025-' || LPAD(MOD(LEVEL,12)+1, 2, '0') || '-' || LPAD(MOD(LEVEL,28)+1, 2, '0'), 'YYYY-MM-DD'), TO_TIMESTAMP('2025-' || LPAD(MOD(LEVEL,12)+1, 2, '0') || '-' || LPAD(MOD(LEVEL,28)+1, 2, '0') || ' 12:00:00', 'YYYY-MM-DD HH24:MI:SS') FROM dual CONNECT BY LEVEL < 10000000; COMMIT; EXEC DBMS_STATS.GATHER_TABLE_STATS('SYS','TEST',ESTIMATE_PERCENT => 100, GRANULARITY => 'ALL');
SQL
복사

실행 및 결과 비교

Case 1 - Autotrace 기반 테스트
SET AUTOT TRACEONLY EXP PLANS STAT SELECT * FROM TEST WHERE C1_340557 < 5000000;
SQL
복사
Rows processed: 4,999,999
Predicate selectivity: 0.500
Case 2 - PRECISE 미사용
SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY_CURSOR('49c6h0w31ujw5', 254, FORMAT => 'CARDS +ROWS'));
SQL
복사
ID
Operation
Name
Cards
Rows
1
TABLE ACCESS (FULL)
TEST
4999K
0
Cards: 4,999,998 → 4999K 로 출력됨 (버림 처리)
단위 기준 적용됨 (K)
Case 3 - PRECISE 사용
SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY_CURSOR('49c6h0w31ujw5', 254, FORMAT => 'PRECISE +CARDS +ROWS'));
SQL
복사
ID
Operation
Name
Cards
Rows
1
TABLE ACCESS (FULL)
TEST
4999998
0
Cards: 정확한 수치 출력

출력 형식 규칙

precise 옵션을 사용하지 않을 경우, CARDS와 ROWS 값은 반올림이 아닌 버림 방식으로 출력됩니다.
예: 100500 → 100K (버림 처리)
또한,
CARDS, ROWS 값이 10만 미만일 경우에는 실제 숫자가 그대로 출력됩니다.
10만 이상부터는 K, M 단위를 사용하여 요약 표기되며, 단위 간 자동 변환도 발생합니다.
예: 12,000K → 12M (상위 단위로 자동 변환)

결론

DBMS_XPLAN.DISPLAY_CURSOR 사용 시 precise 옵션을 지정하면 CARDS, ROWS 값을 실제 수치 그대로 출력하여 더욱 정확한 실행 계획 분석이 가능합니다.
특히 많은 양의 데이터가 처리되는 쿼리에서는 요약된 K/M 단위 출력 대신 정확한 숫자를 통해 튜닝에 필요한 정보를 정밀하게 파악할 수 있습니다.