본문으로 이동
메뉴 여닫기
환경 설정 메뉴 여닫기
개인 메뉴 여닫기
로그인하지 않음
지금 편집한다면 당신의 IP 주소가 공개될 수 있습니다.
데이터베이스에서 원하는 데이터를 찾기 위해 사용한 정렬 체계

인덱스 구성 방법에 따른 구분

편집 원본 편집
삭제 시 레코드의 순서 유지 및 인덱스 갱신 방법의 차이
하드웨어의 물리적 특성에 맞게 설계한 변동성이 적은 인덱스
  • 구조 불변, 하드웨어 종속
  • 인덱스의 내용만 변경
  • 저장할 공간이 없으면 오버플로우 영역 사용
  • 예시: ISAM
동적으로 변하는 블록을 기반으로 설계된 인덱스
  • 구조 가변, 하드웨어 독립
  • 블록이 가득차면 분열(split), 빈 공간이 많을 경우 합병(merge)
  • 예시: VSAM

인덱스 구조에 따른 종류

편집 원본 편집
구성방식 내용 특성
AVL 트리 Depth1 이하 이진 검색 트리 검색 효율
레드블랙 트리 원칙을 유지하며 레드 블랙 색칠 균형 유지
B 트리 균형 다진 검색 트리 균일 속도 보장
B* 트리 B 트리 노드 분할 빈도 개선 B 트리 개선
B+ 트리 시퀀스 셋 구성 트리 순차접근 용이
T 트리 노드 주소 직접 사상 MMDB 최적화
R 트리 MBR 기반 공간정보 저장 공간 DB 전용

인덱스 저장 방식에 따른 종류

편집 원본 편집

엔트리 밀도와 저장 순서에 따른 구분

편집 원본 편집
  • 밀집 인덱스 - 모든 탐색 키 값마다 엔트리를 둔다. 보조 인덱스는 밀집이어야 한다
  • 희소 인덱스 - 일부 값(보통 블록당 하나)만 엔트리로 둔다. 데이터 파일이 그 키로 정렬되어 있어야 하므로 파일당 최대 하나다
  • 클러스터링 인덱스 - 탐색 키 순서로 정렬된 데이터 파일에 정의한 인덱스. 그렇지 않은 파일의 인덱스는 비클러스터링(보조) 인덱스
  • 다단계 인덱스 - 인덱스 위에 희소 인덱스를 쌓은 구조. 데이터 파일을 가리키는 것이 1단계, 맨 위가 마스터 인덱스

인덱스의 생성과 삭제

편집 원본 편집

인덱스는 책의 색인이나 사전처럼, 테이블의 특정 칼럼 값과 그 행의 위치를 짝지어 정렬해 둔 데이터 구조이다. 테이블을 처음부터 끝까지 읽지 않고 원하는 행을 바로 찾게 해 검색 속도를 높인다. 대신 저장 공간을 더 쓰고, 행을 넣거나 고치거나 지울 때 인덱스도 함께 고쳐야 해서 갱신은 느려진다.

인덱스는 DDL 로 만들고 지운다. 명령어는 CREATE INDEX 와 DROP INDEX 이다. ADD·DELETE 가 아니다(DELETE 는 테이블의 행을 지우는 DML 이다).

CREATE [UNIQUE] INDEX 인덱스명 ON 테이블명 (칼럼명 [ASC | DESC], ...);
DROP INDEX 인덱스명;            -- MySQL 은 DROP INDEX 인덱스명 ON 테이블명;
  • 인덱스는 테이블에 딸린 객체라서, 대부분의 DBMS 에서 테이블을 삭제(DROP TABLE)하면 그 테이블의 인덱스도 함께 삭제된다
  • 기본 키나 UNIQUE 제약 조건을 정의하면 DBMS 가 인덱스를 자동으로 만든다
  • MySQL 은 ALTER TABLE 테이블명 ADD INDEX 로도 인덱스를 만들 수 있지만, 이는 ALTER TABLE 문의 절이다. 인덱스를 만드는 독립된 명령은 CREATE INDEX 다
  • 표준 SQL 에는 인덱스 정의를 바꾸는 문이 없어 보통 지우고 다시 만든다. 오라클의 ALTER INDEX ... REBUILD 처럼 DBMS 마다 재구성 명령을 따로 둔다