← 질문 목록
#254깊이 0

인덱스 범위 스캔과 전체 스캔 중 무엇을 선택하는가?

데이터베이스심화인덱스·질의

데이터의 선택도와 비용 옵티마이저의 판단에 따라 결정한다. 읽어야 할 데이터가 전체의 일정 비율을 넘으면 인덱스보다 전체 스캔이 빠르다.

기준인덱스 범위 스캔전체 스캔
접근 방식B-Tree 탐색 후 리프 노드 순회데이터 페이지 순차 읽기
효율성소량 데이터 추출 시 유리대량 데이터 추출 시 유리
I/O 방식랜덤 I/O 발생순차 I/O 발생

인덱스만으로 필요한 칸이 다 채워지지 않으면 데이터 페이지를 따로 읽어야 하고 그 자리에서 흩어진 읽기가 생긴다. 읽을 양이 많아지면 이 오버헤드가 순차적으로 읽는 전체 스캔보다 커진다.

옵티마이저는 통계 정보를 바탕으로 비용을 계산한다. 인덱스로 읽어야 할 페이지 수가 전체 페이지 수의 상당 부분을 차지하면 전체 스캔을 선택한다.

통계 정보가 오래되었을 때 엉뚱한 스캔 방식이 선택되어 성능이 급락한다. 이때는 먼저 통계를 새로 모으고 쿼리와 인덱스를 살핀다. 그래도 안 되면 그때 힌트를 본다.

추천 꼬리질문

0/300

적은 내용은 AI 학습에 쓰일 수 있습니다. 이름이나 연락처는 넣지 말아 주세요.

관련 질문

인덱스 범위 스캔과 전체 스캔 중 무엇을 선택하는가?