클러스터링 팩터조회 SQL
SELECT T.TABLE_NAME, I.INDEX_NAME, T.BLOCKS, T.NUM_ROWS, I.CLUSTERING_FACTOR
FROM USER_TABLES T, USER_INDEXES I
WHERE I.TABLE_NAME = T.TABLE_NAME
AND T.TABLE_NAME IN ('ORD_ITEM', 'ORD_ITEM_RANDOM')
Starts : 각오퍼레이션 단계별 실행 횟수
E-Rows : 옵티마이저가 예상한 Rows
A-Rows : 각 오퍼레이션 단계에서 읽거나 갱신한 로우 수
A-times : 각 오퍼레이션 단계별 소요시간
Buffers : 캐시에서 읽은 버퍼 블록 수
Reads : 디스크에서 읽은 블록수
인덱스블록을 5805블록만큼 접근해 인덱스에서 약 154만 3000건의 데이터를 추출하고
테이블로 약 154만 3000번을 방문
Predicate Information에서 access로 표시되었으므로 대략하나의 인덱스 블록에
약 265로우(1,543,000/5805)를 저장했다고 볼 수 있음.
꽤 많은 수의 데이터를 반환했지만 인덱스 읽는과정에서는 효율적이라 볼수있음
인덱스 스캔 후 테이블로 방문하여 최종결과로 집계되는 결과가 약 154만 3000건으로 인덱스를 통한 테이블로의 방문에는 비효율이 없음.
인덱스블록을 7053블록 접근해 인덱스에서 약 187만 5000건 추출하고 테이블로 187만5000번 방문
최종결과 집계건수가 9333건으로 약 186만번 이상의 방문이 불필요 > 비효율
Predicate Information에서 2번항목에 SHOP_NO='SH0001'조건을 필터처리
테이블엑세스에서 필터의 의미는 테이블에 187만5000번방문하면서 SHOP_NO='SH0001'조건을 확인하였다는 뜻.
기존인덱스에 SHOP_NO를 인덱스컬럼으로 추가하면 개선효과
인덱스 블록 3만9916블록 접근해 인덱스에서 12건데이터 추출 > 비효율
- 범위 조건 이후에 등장하는 컬럼은 인덱스 필터로 동작하기때문에 효율이 떨어짐.