K
KRYFT Problem Bank
데이터베이스 보통 이론

인덱스 설계 전략

쿼리 패턴에 맞는 최적의 인덱스 설계

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 문)
  • 설계 이유 설명
  • 트레이드오프 고려사항

답안 작성