인덱스(Index)란?
- DBMS에서 컬럼의 값과 해당 레코드가 저장된 주소를 키와 값의 쌍으로 인덱스를 만들어 두는 것
- DBMS의 인덱스는 항상 정렬된 상태를 유지하기 때문에 원하는 값을 탐색하는데는 빠르지만 새로운 값을 추가하거나 삭제, 수정하는 경우에는 쿼리문 실행속도가 느려짐
- 결론적으로 DMBS에서 인덱스는 데이터의 저장 성능을 희생하고 그 대신 데이터의 읽기 속도를 높이는 기능
- Select 쿼리 문장의 where 조건절에 사용되는 컬럼이라고 전부 인덱스로 생성하면 데이터 저장 성능이 떨어지고 인덱스의 크기가 비대해져 오히려 역효과를 불러일으킴
인덱스 자료구조
B+- Tree 인덱스 알고리즘
- 일반적으로 사용되는 인덱스 알고리즘
- 컬럼의 값을 변형하지 않고 원래의 값을 이용해 인덱싱하는 알고리즘
Hash 인덱스 알고리즘
- 컬럼의 값으로 해시 값을 계산해서 인덱싱하는 알고리즘으로 매우 빠른 검색을 지원
- 하지만 값을 변형해서 인덱싱하므로, 특정 문자로 시작하는 값으로 검색을 하는 전방 일치와 같이 값의 일부만으로 검색하고자 할 때는 해시 인덱스를 사용할 수 없음
- 주로 메모리 기반은 데이터베이스에서 많이 사용
인덱스 생성시 b- tree를 사용하는 이유
- select 질의의 조건에는 부등호(<>) 연산도 포함