출처 https://bcp0109.tistory.com/365
데이터 중복도(cardinality)가 적은 컬럼 위주로 적용할 것
index 개수는 많아도 3~4개까지만 사용할 것
- 삽입/수정/삭제 시 index로 정렬된 데이터도 같이 수정해야 하기 때문에 성능이 떨어질 수 있음
- 데이터 증가에 따라 index도 증가하기 때문에 사용되는 메모리도 같이 증가함
- index가 많아지면 옵티마이저가 잘못된 인덱스를 선택할 확률이 높아짐
읽어야 하는 레코드가 많아지면 테이블을 직접 읽는 것 보다 성능이 떨어짐
- 전체 레코드의 25%가 넘어가면 테이블을 직접 읽는 것이 더 빠름
- 옵티마이저가 index를 사용할지 알아서 판단하기 때문에 크게 신경쓸 부분은 아님
트리구조로 된 index 특성상 복합 index 설정시 설정된 컬럼을 순서대로 사용해야 index를 탈 수 있다.
복합 index에서 순서는 데이터 중복도(cadinality)가 낮은 순으로 설정하는 것이 빠르다.
index를 여러개 사용할 때 범위 조건을 걸면 범위 조건은 index를 타지만 이후 조건들은 index를 타지 않는다.
index로 지정한 컬럼을 조건에 사용할 때 사칙연산 등 컬럼에 수정을 가하면 index를 타지 않는다.