Skip to content

Commit 8552e2a

Browse files
authored
Merge pull request #227 from prgrms-web-devcourse-final-project/jsy/indexing
♻️ refactor: event_members 테이블에 (event_id, member_id) 복합 인덱스 추가
2 parents c8145bf + 2fba2af commit 8552e2a

File tree

2 files changed

+59
-0
lines changed

2 files changed

+59
-0
lines changed
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
-- 1. 인덱스 생성
2+
CREATE INDEX idx_event_members_event_member
3+
ON event_members(event_id, member_id);
4+
5+
# CREATE INDEX idx_event_members_event_activated
6+
# ON event_members(event_id, confirmed);
7+
8+
-- 2. 인덱스 확인 (MySQL에서는 SHOW INDEX 사용)
9+
SHOW INDEX FROM event_members;
10+
11+
-- 3. 쿼리 성능 계획 확인
12+
EXPLAIN
13+
SELECT *
14+
FROM event_members
15+
WHERE event_id = 1
16+
AND member_id = 'GOOGLE_115434652372556552718'
17+
LIMIT 1;
18+
19+
-- mysql 은 전체 강제 인덱싱 사용 옵션이 따로 없음.
20+
21+
-- FORCE INDEX로 인덱스 유도 가능
22+
EXPLAIN
23+
SELECT *
24+
FROM event_members FORCE INDEX (idx_event_members_event_member)
25+
WHERE event_id = 1 AND member_id = 'GOOGLE_115434652372556552718'
26+
LIMIT 1;
27+
28+
29+
SHOW INDEX FROM event_members;
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
-- 1. 인덱스 생성
2+
CREATE INDEX IF NOT EXISTS idx_event_members_event_member
3+
ON event_members(event_id, member_id);
4+
5+
-- CREATE INDEX IF NOT EXISTS idx_event_members_event_activated
6+
-- ON event_members(event_id, confirmed);
7+
8+
-- 2. 인덱스 확인 (스키마 명시)
9+
SELECT *
10+
FROM pg_catalog.pg_indexes
11+
WHERE tablename = 'event_members';
12+
13+
-- 3. 쿼리 성능 계획 확인
14+
EXPLAIN
15+
SELECT *
16+
FROM event_members
17+
WHERE event_id = 1
18+
AND member_id = 'GOOGLE_115434652372556552718'
19+
LIMIT 1;
20+
21+
-- 실제 쿼리에 인덱스 사용되는지 확인. 지금 row 1개라 자동으로 seq scan(full scan)
22+
EXPLAIN ANALYZE
23+
SELECT *
24+
FROM event_members
25+
WHERE event_id = 1
26+
AND member_id = 'GOOGLE_115434652372556552718'
27+
LIMIT 1;
28+
29+
-- 강제 인덱스 사용 유도
30+
SET enable_seqscan = OFF;

0 commit comments

Comments
 (0)