https://jie0025.tistory.com/107
Index
- 데이터를 좀 더 빠르게 찾을 수 있도록 도와주는 도구
- 목차를 생성하는 것과 같다고 볼 수 있다.
- MySQL 은 데이터 검색 시 첫 번째 필드부터 전체를 검색한다. = FULL SCAN
- 필요없는 인덱스를 만들게 될 경우 차지하는 공간만 늘어나고, 인덱스를 이용한 조회의 속도가 전체 테이블 조회의 속도보다 느려진다.
인덱스 사용하면 좋은 경우
- 테이블 행의 개수가 많은 경우
- 인덱스를 적용한 컬림이 where절에 많이 사용되는 경우
- 검색 결과가 원본 테이블 데이터에 비해 적을 경우(2 ~ 4%)
- 해당 컬럼이 null을 포함한 경우
인덱스 사용하면 좋지 않은 경우 = Full Scan
- 테이블의 행의 개수가 적음
- 검색결과가 원본 테이블 데이터의 많은 비중을 차지하는 경우
- 사용빈도가 낮고 칼럼의 선별도가 좋지않은 (true/false) 칼럼의 경우 사용하지 않는 것이 좋다
- 잦은 갱신 = 원본 테이블의 insert, delete, update가 빈번(성능 저하 → 인덱스 재생성해야하기 때문)