패스잇
시스템 설계 · 중급

특정 테이블의 쿼리 성능을 최적화하기 위해 인덱스를 설계해야 합니다. 어떤 인덱스 종류(예: B-tree, Hash, 클러스터링, 논클러스터링)를 고려해야 하며, 복합 인덱스(Composite Index)는 언제 유용하게 사용될 수 있는지 설명해 주세요.

힌트 · 쿼리 패턴, 데이터 분포, 카디널리티를 고려하여 인덱스 타입을 선택해야 합니다. 복합 인덱스는 여러 컬럼을 함께 검색하거나 정렬할 때 유용하며, 인덱스 순서가 중요합니다.

B-Tree복합 인덱스선택도쿼리 패턴클러스터형 인덱스

모범답안

쿼리 성능 최적화를 위한 인덱스 설계는 쿼리 패턴, 데이터 분포, 그리고 카디널리티를 종합적으로 고려해야 합니다.

가장 일반적인 인덱스 타입은 B-Tree 인덱스입니다. 대부분의 경우에 적합하며, 범위 검색이나 정렬에도 효율적입니다. Hash 인덱스는 특정 값의 존재 여부를 빠르게 확인하는 데 유용하지만, 범위 검색에는 적합하지 않습니다.

클러스터형 인덱스는 테이블 당 하나만 존재할 수 있으며, 데이터 자체를 인덱스 키 순서대로 정렬합니다. 따라서, 전체 데이터를 자주 조회하는 경우에 유리합니다. 논클러스터형 인덱스는 데이터 위치를 가리키는 포인터를 저장하며, 여러 개를 생성할 수 있습니다.

복합 인덱스는 여러 컬럼을 함께 묶어 인덱스를 생성하는 것으로, 여러 컬럼을 동시에 검색하거나 정렬할 때 성능을 향상시킬 수 있습니다. 예를 들어, WHERE category = 'A' AND price < 10000 쿼리의 경우, (category, price) 순서로 복합 인덱스를 생성하면 좋습니다. 이때, 인덱스 컬럼 순서가 쿼리 조건과 일치해야 효과를 볼 수 있습니다. 선택도가 높은 컬럼을 먼저 인덱싱하는 것이 일반적입니다.

읽었다면, 이제 직접 답해볼 차례예요

패스잇 앱에서 이 질문에 말로 답하면 AI가 꼬리질문까지 이어가며 1:1 코칭합니다.

함께 보는 데이터베이스 설계 면접 질문

← 데이터베이스 설계 면접 질문 전체 보기