문제
다음 테이블에서 인덱스 설계 시 고려해야 할 요소들을 분석한 결과로 가장 적절한 것은?
SQL[주문] 주문번호(PK), 고객ID, 주문일자, 상품코드, 수량, 주문상태 -- 조회 패턴 분석 결과 -- 90%: WHERE 고객ID = ? AND 주문일자 BETWEEN ? AND ? -- 8%: WHERE 주문상태 = 'PENDING' ORDER BY 주문일자 -- 2%: WHERE 상품코드 = ?
① (고객ID, 주문일자, 주문상태) 복합 인덱스가 최적이다 ② 주문상태 단일 인덱스만으로 모든 쿼리를 효율적으로 처리할 수 있다 ③ (고객ID, 주문일자) 복합 인덱스와 (주문상태, 주문일자) 복합 인덱스를 각각 생성해야 한다 ④ 상품코드는 사용 빈도가 낮으므로 인덱스 생성 시 우선순위에서 제외해야 한다
정답
3번
해설
주요 접근 패턴 90%를 위해 (고객ID, 주문일자) 복합 인덱스가 필요하고, 8%의 패턴을 위해 (주문상태, 주문일자) 복합 인덱스가 필요합니다. 범위 조건인 주문일자는 각 인덱스의 두 번째 위치에 배치하는 것이 효율적입니다. ①은 90% 패턴에서 주문상태가 불필요, ②는 고객ID 조건을 처리할 수 없음, ④는 2%라도 필요시 별도 고려가 필요하지만 현재 제시된 선택지에서는 우선순위가 낮음이 맞습니다.