index
index란
RDBMS에서 검색 속도를 높이는 기술중 하나이다.
대게 B-Tree, B+ Tree 구조를 갖는다.
index는 해당 TABLE의 컬럼을 색인화 한다.
index는 논리적/물리적으로 테이블과 독립적임
TABLE 에는 데이터의 레코드가 순서 없이 저장된다. 이때 데이터를 찾을 경우 데이터 페이지의 청므 레코드부터 끝 레코드까지 다 읽어 검색 조건과 비교하게 된다.
이러한 방식을 full scan이라고 하는데 full scan이 아닌 색인화 되어 있는 index파일을 검색하여 검색속도를 빠르게 한다.
index의 장단점
- 키 값을 기초로 하여 테이블에서 검색과 정렬 속도가 향상된다.
- 테이블의 기본 키는 자동으로 인덱스 된다.
- 인덱스를 만들면 .mdb 파일 크기가 늘어난다.
- 데이터를 업데이트 하거나 레코드를 추가 또는 삭제할 때 성능이 떨어진다.
index 생성시 고려할 점
- WHERE 절에서 사용되는 컬럼을 인덱스로 만든다.
- like ‘%~~~’는 조심(처음 %가 붙으면 table scan이 된다.)
- 데이터의 중복도가 높은 열은 인덱스로 만들지 않는다.(값이 true/false 이거나 성별 같은 경우)
- join, order by 에 자주 사용되는 열에는 인덱스를 생성해주는 것이 좋다.
- 외래키가 사용되는 열에는 인덱스를 생성해주는 것이 좋다.
- insert, delete, update 등 데이터의 변경이 많은 컬럼에는 인덱스를 걸지 않는 편이 좋음