패스잇
시스템 설계 · 심화

복잡한 분석 쿼리(예: 다중 조건 조인, 부분 문자열 검색, 공간 데이터 검색)의 성능을 최적화하기 위한 고급 인덱싱 전략을 설명하시오. 특히, 함수 기반 인덱스(Function-Based Index), 부분 인덱스(Partial Index), 커버링 인덱스(Covering Index), 공간 인덱스(Spatial Index) 등의 개념과 실제 적용 사례, 그리고 각 인덱스의 장단점 및 주의사항에 대해 논하시오.

힌트 · 쿼리 패턴을 분석하여 적절한 인덱스 유형을 선택하는 것이 중요합니다. 인덱스의 저장 공간, 쓰기 성능 오버헤드를 고려하며, 특정 쿼리 유형에 최적화된 인덱스를 설계해야 합니다.

함수 기반 인덱스부분 인덱스커버링 인덱스공간 인덱스쿼리 옵티마이저

모범답안

복잡한 분석 쿼리 성능 최적화를 위한 고급 인덱싱 전략에 대해 말씀드리겠습니다.

먼저, 함수 기반 인덱스는 특정 함수나 연산의 결과값을 인덱싱하여, WHERE절에서 해당 함수를 사용하는 쿼리의 성능을 향상시킵니다. 예를 들어, UPPER(column_name)을 인덱싱하면 대소문자를 구분하지 않는 검색이 빨라집니다. 하지만 데이터 변경 시 인덱스 갱신 비용이 발생합니다.

부분 인덱스는 테이블의 일부 데이터에 대해서만 인덱스를 생성합니다. 특정 조건을 만족하는 데이터에 대한 쿼리 성능을 높일 수 있습니다. 예를 들어, status = 'active'인 데이터에 대해서만 인덱스를 생성하면, 활성 사용자 검색 속도가 빨라집니다. 저장 공간을 절약할 수 있지만, 조건에 맞지 않는 쿼리에는 효과가 없습니다.

커버링 인덱스는 쿼리에 필요한 모든 컬럼을 포함하는 인덱스입니다. 테이블에 접근하지 않고 인덱스만으로 쿼리 결과를 반환할 수 있어 매우 빠릅니다. 하지만 인덱스 크기가 커지고, 데이터 변경 시 오버헤드가 증가합니다.

공간 인덱스는 공간 데이터를 효율적으로 검색하기 위한 인덱스입니다. 예를 들어, 특정 위치 주변의 상점을 찾는 쿼리에 유용합니다. R-tree 등의 자료구조를 사용하며, 공간 데이터 타입에 특화되어 있습니다.

이러한 인덱스들은 쿼리 패턴과 데이터 특성을 고려하여 적절히 선택해야 합니다. 쿼리 옵티마이저가 인덱스를 잘 활용하도록 통계 정보를 최신으로 유지하는 것도 중요합니다.

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

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

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

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