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

created_at으로 날짜 조회하는데 인덱스 놔두고 seq scan을 타네요

i
idx_seunghyun
조회 984댓글 4

주문 테이블(orders, 800만건 좀 넘어요)에서 특정 날짜 주문만 뽑는 목록 쿼리가 어느 순간부터 확 느려져서 봤더니 인덱스를 안 타고 있더라고요. created_at 컬럼에 btree 인덱스 걸어둔 지는 한참 됐는데도요.

쿼리는 대충 이런 식입니다.

SELECT * FROM orders
WHERE created_at::date = '2026-07-01'
ORDER BY id DESC
LIMIT 50;

EXPLAIN 찍어보면 이렇게 나와요.

Seq Scan on orders  (cost=0.00..241832.10 rows=39000 width=220)
  Filter: ((created_at)::date = '2026-07-01'::date)
  Rows Removed by Filter: 7960000

인덱스는 분명히 idx_orders_created_at 로 있고, 혹시나 해서 ANALYZE도 다시 돌렸는데 그대로예요. created_at으로 범위 조건(>=, <)을 주면 인덱스를 잘 타는데 저렇게 날짜로 비교만 하면 계속 seq scan이라... 제가 뭘 놓친 걸까요?

댓글 0

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