튜닝중급

Full Table Scan (전체 테이블 스캔)

테이블의 모든 데이터 블록을 순차적으로 읽는 데이터 접근 방식

정의

테이블의 HWM(High Water Mark)까지 모든 블록을 순차적으로 읽는다. 인덱스를 거치지 않고 직접 테이블에 접근한다. 옵티마이저는 통계 정보 기반으로, 조회할 데이터가 테이블 전체 행의 일정 비율(보통 5~15%)을 넘으면 Full Scan이 더 빠르다고 판단할 수 있다.

왜 중요한가?

실행계획에서 가장 자주 보이는 병목 원인. 인덱스 설계와 SQL 튜닝의 시작점. 단, 항상 나쁜 것은 아니다. 소량 테이블이나 대량 데이터를 읽어야 할 때는 Full Scan이 더 효율적일 수 있다.

틀리기 쉬운 포인트

  • !Full Table Scan이 항상 나쁘다고 단정 (소량 데이터에서는 오히려 효율적)
  • !WHERE 절에 함수를 씌워 인덱스를 무력화 (예: WHERE TO_CHAR(date_col) = ...)
  • !인덱스가 있는데도 통계정보 미갱신으로 옵티마이저가 Full Scan 선택

예시

  -- 실행계획에서 TABLE ACCESS FULL이 나타나면 인덱스 활용 여부를 점검

성능 포인트

!소량 테이블이나 대량 비율 조회는 Full Scan이 더 효율적. 무조건 인덱스를 강제하지 마라.

관련 개념

관련 문제 풀어보기

관련 카테고리