쓰기 성능 저하
INSERT, UPDATE, DELETE 작업 시, 해당 데이터의 인덱스도 함께 수정해야 해서 성능 저하가 발생함. 대량의 데이터 삽입/삭제 시 더욱 두드러짐.
디스크 공간 소모
인덱스는 별도의 자료구조로 저장되므로, 추가적인 디스크 공간을 차지함.
자주 조회되는 컬럼
자주 검색되는 컬럼에는 인덱스를 사용하는 게 유리.
JOIN 연산
JOIN을 많이 사용하는 테이블에서 연결할 키(보통 ID나 외래키)에 인덱스를 추가하면 성능이 향상됨.
ORDER BY, GROUP BY 연산
정렬이 많이 필요한 경우, 해당 컬럼에 인덱스를 추가하면 빠르게 결과를 반환할 수 있음.
범위 검색
BETWEEN, >=, <= 같은 범위 검색에서 인덱스가 효율적임.
예: age, created_at 등 날짜나 숫자 범위 검색에 유리.
예: last_updated_at, status 같은 컬럼은 변경이 잦을 수 있기 때문에, 인덱스를 계속 갱신하는 비용이 크다.
인덱스 사용 성능을 주기적으로 점검하고, 사용되지 않는 인덱스는 제거하는 게 중요해 보인다.
이론으로만 학습해봤는데 성능 테스트를 직접 진행해봐야겠다. B-Tree 인덱스가 기본이고 Hash 인덱스, Bitmap 인덱스 등에 대해서도 학습해 볼 필요가 있을듯하다.