SQL 쿼리를 작성할 때, 인덱스가 걸린 컬럼을 썼다고 안심해도 될까요?
데이터가 많아질수록 쿼리 성능이 중요해집니다. 실행 계획을 통해 인덱스를 잘 타고 있는지 꼭 확인해보세요.
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=...)
WHERE절에서 인덱스 없는 컬럼 사용LOWER(email) 등)LIKE '%abc'처럼 앞에 와일드카드 사용인덱스가 걸린 컬럼은, 타입을 맞추고 불필요한 함수나 패턴으로 인덱스를 방해하지 않도록 주의하세요.
이런 작은 차이가 쿼리 성능을 크게 바꿉니다.