데이터베이스
보통
이론
인덱스 설계 전략
쿼리 패턴에 맞는 최적의 인덱스 설계
35분
80점
#3725
문제 설명
주어진 쿼리 패턴을 분석하고 최적의 인덱스를 설계하세요.
테이블
CREATE TABLE posts (
id BIGINT PRIMARY KEY,
user_id BIGINT NOT NULL,
category_id INT NOT NULL,
title VARCHAR(200),
content TEXT,
status ENUM("draft", "published", "archived"),
view_count INT DEFAULT 0,
created_at TIMESTAMP,
updated_at TIMESTAMP
);
-- 1000만 행
쿼리 패턴
-- Q1: 사용자의 최신 글 목록 (매우 빈번)
SELECT * FROM posts
WHERE user_id = ? AND status = "published"
ORDER BY created_at DESC LIMIT 20;
-- Q2: 카테고리별 인기글 (빈번)
SELECT * FROM posts
WHERE category_id = ? AND status = "published"
ORDER BY view_count DESC LIMIT 10;
-- Q3: 전체 최신 글 (빈번)
SELECT * FROM posts
WHERE status = "published"
ORDER BY created_at DESC LIMIT 50;
-- Q4: 제목 검색 (가끔)
SELECT * FROM posts
WHERE title LIKE "%검색어%"
AND status = "published";
-- Q5: 통계 쿼리 (드물게)
SELECT user_id, COUNT(*) as cnt
FROM posts
WHERE created_at > DATE_SUB(NOW(), INTERVAL 7 DAY)
GROUP BY user_id;
제출 내용
- 각 쿼리 분석
- 인덱스 설계 (CREATE INDEX 문)
- 설계 이유 설명
- 트레이드오프 고려사항