C.W.K.
Stream
Lesson 02 of 10 · published

CREATE INDEX — Single, Composite, Unique

~12 min · indexes, create-index, composite

Level 0Scout
0 XP0/80 lessons0/10 achievements
0/120 XP to next level120 XP to go0% complete

인덱스 모양 3 가지

  • Single-columnCREATE INDEX i ON t(col). 자주 필터링하는 컬럼.
  • CompositeCREATE INDEX i ON t(a, b). 순서 중요: a 단독 또는 a AND b 필터링 도움, b 단독은 안 됨. 인덱스 항목이 (a,b) 정렬됐다고 생각 — a 로 binary search, 그 그룹 안에서 b 로.
  • UniqueCREATE UNIQUE INDEX i ON t(col). 인덱스 + uniqueness 제약. UNIQUE 컬럼 선언이 암묵적으로 사용.
Tip: Composite 인덱스 컬럼 순서 고를 때, 가장 많은 distinct 값 가진 거 (높은 selectivity) 를 앞에 — 가장 흔한 query 가 덜 selective 한 leading 컬럼으로 필터링하지 않는 한.

Code

3 가지 인덱스 종류·sql
-- Single-column
CREATE INDEX idx_msg_conv ON messages(conversation_id);

-- Composite — 순서 중요
CREATE INDEX idx_msg_conv_created ON messages(conversation_id, created_at DESC);

-- Unique
CREATE UNIQUE INDEX idx_users_email ON users(email);
인덱스 검사·sql
-- 테이블의 모든 인덱스
SELECT name, sql FROM sqlite_schema
WHERE type = 'index' AND tbl_name = 'messages';

-- 또는 PRAGMA
SELECT * FROM pragma_index_list('messages');
SELECT * FROM pragma_index_info('idx_msg_conv_created');

External links

Exercise

messages 테이블에 컬럼 순서 다른 composite 인덱스 3 개: (a) (conversation_id, created_at), (b) (created_at, conversation_id), (c) (brain, conversation_id). Query 3 개 — conversation_id 단독, conversation_id AND created_at, created_at 단독 — EXPLAIN QUERY PLAN 으로 어느 게 어떤 인덱스 쓰는지 확인. 순서가 어디서 함정 됐는지 기록.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.