본문 바로가기
Q&A해결2026년 8월 25일2분 읽기

PostgreSQL 이메일 조회 쿼리가 데이터 늘어난 뒤 갑자기 느려졌는데 EXPLAIN에 Seq Scan이 떠요

p
pg_minjae
조회 4댓글 2

안녕하세요. 며칠째 원인을 못 찾아서 글 남깁니다.

회원 로그인할 때 이메일로 조회하는 아주 단순한 쿼리인데, 초반엔 빨랐다가 회원이 30만 명쯤 넘어가니까 갑자기 1~2초씩 걸립니다. 인덱스는 분명히 걸어놨거든요.

-- 인덱스
CREATE INDEX idx_users_email ON users (email);

-- 실제 쿼리 (애플리케이션에서 대소문자 무시하려고)
SELECT id, name FROM users WHERE lower(email) = lower('Minjae@Example.com');

EXPLAIN ANALYZE 돌려보면 이렇게 나옵니다.

Seq Scan on users  (cost=0.00..8931.00 rows=1 width=36)
  Filter: (lower(email) = 'minjae@example.com'::text)
  Rows Removed by Filter: 312440
 Planning Time: 0.12 ms
 Execution Time: 1487.221 ms

인덱스가 있는데 왜 Seq Scan을 타는 걸까요? 인덱스 이름이 잘못된 건 아닌 것 같은데 도무지 모르겠습니다.

댓글 0

아직 댓글이 없습니다.
Ctrl+Enter로 등록