기초 개념, 기술 면접 대비

데이터베이스 면접 퀴즈

데이터 저장과 관리의 핵심

SQL, 인덱스, 트랜잭션, 정규화, NoSQL 등 데이터베이스 핵심 개념을 마스터하세요. 백엔드 개발의 중심인 DB 설계와 최적화 능력을 키우세요.

로그인 없이 풀어보기
55개 문제, 무료

학습할 핵심 개념

SQL 쿼리 최적화
인덱스 설계와 B-Tree
트랜잭션과 ACID
정규화와 비정규화
NoSQL 종류와 선택
샤딩과 레플리케이션
Connection Pool

핵심 개념 미리보기

데이터베이스 면접에서 꼭 나오는 개념을 미리 확인하세요

B-tree 인덱스

핵심

B-tree 인덱스

데이터베이스에서 가장 널리 사용되는 인덱스 구조. 정렬된 데이터의 빠른 검색, 범위 조회, 정렬을 지원한다.

왜 인덱스가 필요한가?

방식하는 일복잡도
인덱스 없이1,000만 건을 처음부터 끝까지 하나씩 확인한다O(N)
B-tree 인덱스3에서 4단계만에 찾는다. 1,000만 건이면 약 23번 비교한다O(log N)

B-tree 구조

         [  30  |  60  ]         ← Root
        /       |       \
  [10|20]    [40|50]    [70|80]  ← Branch
  / | \     / | \     / | \
[..] [..] [..] [..] [..] [..] [..]
                                  ← Leaf
  (Leaf 노드끼리 연결 → 범위 조회)

핵심 특징:

  • 모든 리프 노드가 같은 깊이
  • 리프 노드끼리 연결 (Linked List)
  • 키가 정렬된 상태 유지

B-tree vs Hash 인덱스

연산B-treeHash
등호 (=)O(log N)O(1)
범위 (<, >)지원불가
정렬 (ORDER BY)지원불가
LIKE 'abc%'지원불가
GROUP BY지원불가

→ 대부분의 경우 B-tree가 범용적

인덱스 동작 원리

-- 인덱스가 있는 컬럼 조회
SELECT * FROM users WHERE age = 25;

B-tree 탐색:
Root [30|60]
  → 30보다 작으니 왼쪽
Branch [10|20|25]
  → 25 발견!
Leaf → 실제 행 위치 (ROWID)
  → 테이블에서 해당 행 가져옴

인덱스가 안 타는 경우

케이스이유
WHERE age + 1 = 26컬럼에 연산
WHERE name LIKE '%kim'앞에 %
WHERE age != 25부정 조건
WHERE age IS NULL(DB에 따라 다름)
데이터 대부분 매칭Full Scan이 더 효율적

인덱스의 비용

INSERT/UPDATE/DELETE 시:
  테이블 수정 + 인덱스도 수정!

인덱스 많으면:
  읽기 ↑ 빨라짐
  쓰기 ↓ 느려짐 (인덱스 유지 비용)

→ "읽기 위주" 테이블에 인덱스 추가
→ "쓰기 위주" 테이블은 최소한으로

실무 가이드

상황인덱스 전략
WHERE 자주 사용해당 컬럼에 인덱스
JOIN 조건FK 컬럼에 인덱스
ORDER BY + LIMIT정렬 컬럼에 인덱스
복합 조건복합 인덱스 고려
로그 테이블 (쓰기 위주)인덱스 최소화
면접에서 이렇게 나옵니다
  • Q.B-tree 인덱스의 구조와 동작 원리를 설명해주세요.
  • Q.B-tree와 Hash 인덱스의 차이는 무엇인가요?
  • Q.인덱스를 타지 않는 쿼리 패턴은 어떤 것이 있나요?

클러스터드 vs 논클러스터드 인덱스

핵심

클러스터드 vs 논클러스터드 인덱스

핵심 차이

클러스터드 인덱스는 데이터 자체가 정렬된 순서로 저장됩니다.

페이지담긴 행
Page 1ID=1, 홍길동
Page 2ID=2, 김철수
Page 3ID=3, 이영희

정렬 순서가 곧 저장 순서이므로 테이블당 하나만 둘 수 있습니다. 사전과 같습니다.

논클러스터드 인덱스는 별도 인덱스가 데이터 위치를 가리킵니다.

인덱스 항목가리키는 페이지
Page 3
Page 2
Page 1

데이터는 저장 순서 그대로 두고 인덱스만 따로 두므로 테이블당 여러 개를 만들 수 있습니다. 책 뒤 색인과 같습니다.

비교

항목클러스터드논클러스터드
개수테이블당 1개여러 개 가능
데이터 정렬물리적 정렬별도 구조
범위 검색매우 빠름상대적 느림
삽입 성능느림 (재정렬)빠름
저장 공간추가 없음인덱스 공간 필요
비유사전책 뒤 색인

실무 선택 기준

범위 검색 많은 컬럼 (날짜, 가격)
  → 클러스터드 인덱스

정확한 값 조회 (이메일, 주문번호)
  → 논클러스터드 인덱스

자주 변경되는 컬럼
  → 클러스터드 피하기 (재정렬 비용)

MySQL vs PostgreSQL

DB클러스터드 인덱스
MySQL (InnoDB)PK가 자동 클러스터드
PostgreSQL클러스터드 개념 없음 (CLUSTER 명령은 1회성)

면접 포인트

"PK를 AUTO_INCREMENT로 설정하는 이유가 뭔가요?"

InnoDB에서 PK = 클러스터드 인덱스. 순차 증가값이면 삽입 시 페이지 분할이 적어 쓰기 성능이 좋다. UUID를 PK로 쓰면 랜덤 삽입 → 페이지 분할 빈번 → 성능 저하.

면접에서 이렇게 나옵니다
  • Q.클러스터드 인덱스와 논클러스터드 인덱스의 차이를 설명해주세요
  • Q.MySQL InnoDB에서 PK를 UUID로 설정하면 어떤 문제가 생기나요?
  • Q.테이블에 클러스터드 인덱스가 1개만 가능한 이유는?

복합 인덱스

핵심

복합 인덱스 (Composite Index)

핵심 개념

여러 컬럼을 하나의 인덱스로 묶은 것.

CREATE INDEX idx_user_date
  ON orders (user_id, created_at);

인덱스 구조 (B-tree):
         [user=5, 03-01]
        /                \
[user=3, 02-15]    [user=7, 03-10]
  /         \
[user=1,   [user=3,
 01-20]     03-05]

최좌선 원칙 (Leftmost Prefix)

복합 인덱스 (A, B, C) 활용 여부:

쿼리 조건인덱스 사용
WHERE A = ?O (A만 사용)
WHERE A = ? AND B = ?O (A, B 사용)
WHERE A = ? AND B = ? AND C = ?O (전체 사용)
WHERE B = ?X (A 없음)
WHERE B = ? AND C = ?X (A 없음)
WHERE A = ? AND C = ?일부 사용 (A 만)

왼쪽부터 연속으로 사용해야 인덱스가 동작한다!

컬럼 순서 설계

규칙: 카디널리티 높은 컬럼 → 앞에

예시: 주문 테이블 검색
  - status: 3종류 (카디널리티 낮음)
  - user_id: 10만 종류 (카디널리티 높음)

권장: INDEX (user_id, status)
  → user_id로 대부분 걸러짐

비권장: INDEX (status, user_id)
  → status로는 33%만 걸러짐

실무 예시: 쇼핑몰 주문 조회

-- 자주 쓰는 쿼리
SELECT * FROM orders
WHERE user_id = 123
  AND status = 'completed'
ORDER BY created_at DESC;

-- 최적 인덱스
CREATE INDEX idx_orders_lookup
  ON orders (user_id, status, created_at);

주의사항

  • 인덱스는 쓰기 성능을 희생하는 대가
  • 불필요한 복합 인덱스는 오히려 독
  • 3-4개 컬럼이 적당 (그 이상은 재고)
면접에서 이렇게 나옵니다
  • Q.복합 인덱스의 최좌선 원칙(Leftmost Prefix Rule)을 설명해주세요
  • Q.복합 인덱스에서 컬럼 순서를 어떻게 결정하나요?
  • Q.WHERE A = ? AND C = ? 쿼리가 INDEX(A, B, C)를 활용할 수 있나요?

더 많은 개념과 문제는 가입 후 이용할 수 있어요

먼저 5문제 맛보기

데이터베이스 면접 빈출 질문

실제 면접에서 자주 나오는 질문들입니다

Q.

B-tree 인덱스의 구조와 동작 원리를 설명해주세요.

B-tree 인덱스 개념 정리 보기
Q.

B-tree와 Hash 인덱스의 차이는 무엇인가요?

B-tree 인덱스 개념 정리 보기
Q.

인덱스를 타지 않는 쿼리 패턴은 어떤 것이 있나요?

B-tree 인덱스 개념 정리 보기
Q.

인덱스를 많이 만들면 어떤 문제가 생기나요?

B-tree 인덱스 개념 정리 보기
Q.

클러스터드 인덱스와 논클러스터드 인덱스의 차이를 설명해주세요

클러스터드 vs 논클러스터드 인덱스 개념 정리 보기
Q.

MySQL InnoDB에서 PK를 UUID로 설정하면 어떤 문제가 생기나요?

클러스터드 vs 논클러스터드 인덱스 개념 정리 보기
Q.

테이블에 클러스터드 인덱스가 1개만 가능한 이유는?

클러스터드 vs 논클러스터드 인덱스 개념 정리 보기
Q.

복합 인덱스의 최좌선 원칙(Leftmost Prefix Rule)을 설명해주세요

복합 인덱스 개념 정리 보기

이런 점이 좋아요

DB 성능 최적화

데이터 모델링 능력

면접 핵심 질문

지금 바로 시작하세요

무료로 데이터베이스 퀴즈를 풀고, AI 오답 분석으로 실력을 키우세요.