[SQL] 인덱스 잘 타고 있는지 실행 계획으로 확인하기

Unit·2025년 7월 27일

SQL

목록 보기
30/59

SQL 쿼리를 작성할 때, 인덱스가 걸린 컬럼을 썼다고 안심해도 될까요?
데이터가 많아질수록 쿼리 성능이 중요해집니다. 실행 계획을 통해 인덱스를 잘 타고 있는지 꼭 확인해보세요.


👀 실행 계획 확인하는 방법 (PostgreSQL 기준)

EXPLAIN
SELECT *
FROM users
WHERE email = 'test@example.com';

이때 결과가 아래와 같다면 :

Seq Scan on users  (cost=0.00..12.75 rows=1 width=...)

👉🏻 Seq Scan = Sequential Scan = 테이블 전체를 훑는 중 → Full Scan!

반면 아래처럼 나온다면 인덱스를 잘 타고 있는 상태입니다 :

Index Scan using idx_users_email on users  (cost=...)

❗Full Scan이 일어나는 흔한 이유

  • WHERE절에서 인덱스 없는 컬럼 사용
  • 인덱스는 있지만 데이터 타입이 맞지 않음 (예: 암묵적 형변환)
  • 인덱스 컬럼에 함수 사용 (LOWER(email) 등)
  • LIKE '%abc'처럼 앞에 와일드카드 사용

정리

인덱스가 걸린 컬럼은, 타입을 맞추고 불필요한 함수나 패턴으로 인덱스를 방해하지 않도록 주의하세요.
이런 작은 차이가 쿼리 성능을 크게 바꿉니다.

profile
협업, 유지보수, 최적화를 고려한 데이터 실무 팁을 정리합니다.

0개의 댓글