기술 정보
home
채널 소개
home

테이블 조회 시, 조건절 컬럼에 index 존재해도 full scan으로 수행되는 현상

문서 유형
장애 해결
분야
App개발
키워드
plan
적용 제품 버전
7FS02
1 more property

현상

Tibero에서 특정테이블 SELECT 통해 조회 시 WHERE절에 있는 컬럼이 INDEX로 구성되어 있음에도 FULL SCAN으로 수행되는 현상 입니다.
DROP INDEX TIBERO.TB_STOR_IX01; CREATE INDEX "TIBERO"."TB_STOR_IX01" ON TIBERO."TB_STOR" ( "RECORD_CENTER_ID" ASC, "ORIGN_ID" ASC ) / EXEC DBMS_STATS.GATHER_TABLE_STATS('TIBERO', 'TB_STOR', estimate_percent=>3, cascade=>TRUE, degree=>8); SELECT * FROM TIBERO.TB_STOR WHERE RECORD_CENTER_ID = '0000001' AND ORIGN_ID = 'OR20210506145231470' AND VIRUS_FLAG = '1' ; Execution Plan -------------------------------------------------------------------------------- 1 TABLE ACCESS (FULL): TB_STOR (Cost:1185460, %%CPU:0, Rows:1) Predicate Information -------------------------------------------------------------------------------- 1 - filter: (""TB_STOR"".""VIRUS_FLAG"" = '1') AND (""TB_STOR"".""RECO RD_CENTER_ID"" = '0000001') AND (""TB_STOR"".""ORIGN_ID"" = 'OR20210506145231470') (0.000 * 1.000 * 1.000)0') (0.000 * 1.000 * 1.000) NAME VALUE ------------------------------ ---------- db block gets 6349 consistent gets 2782280 physical reads 2785431 redo size 0 sorts (disk) 0 sorts (memory) 3 rows processed 0
SQL
복사

원인

Tibero 7버전부터 _opt_adjust_table_pred_selectivity 디폴트 값이 0으로 변경됐습니다.
Tibero 7부터 특정 패치(245376)가 반영되어 해당 패치 유무에 따라 옵티마이저가 다르게 동작합니다.

해결

_opt_adjust_table_pred_selectivity = 100 를 적용해, 조건절에 맞는 Index 존재 시 Index Scan 방식으로 수행되도록 설정합니다.