[SQL] 인덱스의 장단점

김정연·2024년 5월 20일
post-thumbnail

골프 프로젝트의 2차 업데이트를 시작했다. 기존의 회원 엔티티에는 index를 따로 주지 않아 이메일을 PK로 작업했다.

문제점

이메일을 pk로 두니 @GetMapping을 할 때 url에서 문자를 인식하지 못해 오류가 발생했었다. 특히 리액트 url에서는 전혀 인식이 되지 않았다.

회원테이블에서 email이 pk 이다보니 예약 내역, 주문 내역, 마이페이지 같이 다른 테이블에 fk로 엮여있을 때 불필요한 오류들이 많아 2차 업데이트를 하면서 index를 추가하려고 한다.

인덱스란?

인덱스는 데이터 베이스에서 테이블의 검색 성능을 높여주는 방법이다. 특히 select ~ where절을 사용할 때 속도가 빨라진다. 회원테이블의 경우 모든 테이블 중 가장 데이터가 많이 쌓이는 곳이기 때문에 인덱스 번호는 필수이다.

장점

  • 레코드를 검색할 때 Full Scan이 아닌 특정 index만 검색하게 해준다.
  • 검색이 빠르기 때문에 부하가 감소한다.

단점

  • 인덱스를 관리하기 위해 저장공간 약 10%를 추가로 사용한다.
  • insert, delete, update 등이 발생할 때 인덱스를 위한 추가 작업이 필요하다.
  • 잘못된 상황에서는 오히려 index 때문에 성능이 저하될 수 있다.

적용할 때 주의사항

테이블의 변경이 빈번한 곳은 오히려 적용하지 않는 것이 좋다.
골프 프로젝트에서는 회원, 주문, 예약, 결제 등에 적용할 계획이다.

profile
백엔드 개발자

0개의 댓글