안녕하세요. 며칠째 원인을 못 찾아서 글 남깁니다.
회원 로그인할 때 이메일로 조회하는 아주 단순한 쿼리인데, 초반엔 빨랐다가 회원이 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