인덱스란?
- 데이터베이스에서 특정 컬럼을 정렬해 둔 컬럼
- 추가적인 쓰기 작업과 저장 공간을 활용하여 데이터베이스 테이블의 검색 속도를 향상시키기 위한 자료구조
- B+ Tree 형태로 구성되어 있다
- index가 없는 경우 모든 행을 다 일일히 찾아야 한다
- index가 있는 경우 원하는 값을 빠르게 찾아 index와 연결된 원래 테이블 행을 가져온다
- primary key는 자동으로 index가 생성된다
단점
- 인덱스는 컬럼을 복사해서 정렬해 두는 개념이기 때문에 만들때마다 DB용량을 차지한다.
- 테이블에 있는 데이터를 삽입, 수정, 삭제시 인덱스도 반영이 들어가야 하며 성능하락 우려가 있다.
인덱스를 활용하면 좋은 경우
- 규모가 작지 않은 테이블
- INSERT, UPDATE, DELETE가 자주 발생하지 않는 컬럼
- JOIN이나 WHERE 또는 ORDER BY에 자주 사용되는 컬럼
- 데이터의 중복도가 낮은 컬럼
index가 뭔지 설명해보세요
인덱스(Index)란?