SQL

[DB Optimization#6] 인덱스를 많이 걸면 정말 느려질까?

j.d 2025. 4. 17. 02:15

SQL 인덱스는 조회 성능을 높여주는 강력한 도구입니다.
그래서 많은 분들이 이렇게 생각하곤 합니다.

"그럼 자주 사용할 만한 컬럼엔 전부 인덱스를 걸면 되는 거 아냐?"

하지만 현실은 다릅니다.
인덱스는 조회 성능을 높여주는 대신, 쓰기 작업(삽입, 수정, 삭제) 성능을 떨어뜨립니다.

 

인덱스가 많아지면 성능이 왜 느려질까?

인덱스를 생성한다는 것은 단순히 "검색이 빨라진다"는 의미가 아닙니다.
인덱스를 위한 내부 자료 구조(B-tree)가 함께 관리되기 때문에, 데이터를 삽입하거나 수정할 때마다 MySQL은 원본 테이블뿐만 아니라 인덱스 테이블까지 함께 갱신해야 합니다.

 

즉, 인덱스의 개수가 많을수록 쓰기 작업 시 처리해야 할 작업량도 늘어나게 되는 것입니다.

출처: https://velog.io/@akfls221/%EC%9D%B8%EB%8D%B1%EC%8A%A4%EA%B0%80-%EB%A7%8E%EC%9C%BC%EB%A9%B4-%EB%AC%B4%EC%A1%B0%EA%B1%B4-%EC%A2%8B%EC%9D%80%EA%B0%80-861kuwau

 

실제로 인덱스가 없는 테이블과 인덱스가 많은 테이블 간 데이터 10만 건 삽입 성능을 비교해보았을 때,

아래와 같이 유의미한 차이가 존재했습니다.

 

조회는 빨라지지만, 쓰기(삽입, 수정, 삭제) 성능은 반비례한다.

 

따라서, 조회 성능이 중요하다고 해서 모든 컬럼에 인덱스를 무작정 추가하는 것은 오히려 전체 시스템 성능을 악화시킬 수 있기 때문에 꼭 필요한 컬럼에만 인덱스를 설정하는 것이 중요합니다.