이제 설계한 테이블과 인덱스, 역정규화가 실제 기능에서 어떻게 동작하는지 EXPLAIN으로 실행 계획을 확인한다.

대표적인 시나리오 몇 가지를 살펴본다.

7-1. 로그인 처리 – UNIQUE 인덱스 활용

상황: 사용자가 로그인 화면에서 ID sejong을 입력하고 로그인을 시도한다.

EXPLAIN
SELECT
  member_id,
  login_id,
  password,
  member_name
FROM member
WHERE login_id = 'sejong';

실행 계획을 보면 보통 다음과 같은 특징이 나타난다.

회원 수가 100만, 1000만 명으로 늘어나도 로그인 성능이 거의 떨어지지 않는 이유가 여기 있다.

7-2. 회원 주문 목록 조회 – member_id 인덱스

상황: 특정 회원의 주문 목록을 최신 순으로 조회한다.

EXPLAIN
SELECT
  order_id,
  total_amount,
  order_status,
  ordered_at
FROM orders
WHERE member_id = 1
ORDER BY ordered_at DESC;

7-3. 관리자 주문 조회 – 상태 + 기간 복합 인덱스

상황: 관리자가 특정 기간 동안의 취소 주문만 조회한다.

EXPLAIN
SELECT order_id, member_id, ordered_at, order_status
FROM orders
WHERE order_status = 'CANCELED'
  AND ordered_at BETWEEN '2025-09-01 00:00:00'
                      AND '2025-09-30 23:59:59';