Database Index란
인덱스란 추가적인 쓰기작업과 저장공간을 활용하여 데이터베이스 테이블의 검색 속도를 향상시키기 위한 자료구조다
인덱스를 활용할 경우 Select 외에도 Update, Delete의 성능이 함께 향상된다. (만약 index를 사용하지 않는 경우엔 Full scan을 진행하기에 성능이 떨어진다.)
장점
- 테이블을 조회하는 속도와 그에 따른 성능을 향상시킬 수 있다.
- 전반적인 시스템의 부하를 줄일 수 있다.
단점
- 인덱스를 관리하기 위해 DB의 약 10%에 해당하는 저장공간이 필요하다.
- 인덱스를 관리하기 위해 추가 작업이 필요하다.
- 인덱스를 잘못 사용할 경우 오히려 성능이 저하되는 역효과가 발생할 수 있다.
만약 update, delete 연산이 반복해서 일어나는 경우 데이터가 10만건일 경우 인덱스는 100만건이 넘어가는 비효율적인 현상이 일어날 수 있다.
[ 인덱스(index)를 사용하면 좋은 경우 ]
- 규모가 작지 않은 테이블
- INSERT, UPDATE, DELETE가 자주 발생하지 않는 컬럼
- JOIN이나 WHERE 또는 ORDER BY에 자주 사용되는 컬럼
- 데이터의 중복도가 낮은 컬럼