데이터베이스 인덱스
IT위키
더 많은 작업
- 데이터베이스에서 원하는 데이터를 찾기 위해 사용한 정렬 체계
- 순차 인덱스
- 해시 인덱스
- 비트맵 인덱스
- 클러스터 인덱스
인덱스는 책의 색인이나 사전처럼, 테이블의 특정 칼럼 값과 그 행의 위치를 짝지어 정렬해 둔 데이터 구조이다. 테이블을 처음부터 끝까지 읽지 않고 원하는 행을 바로 찾게 해 검색 속도를 높인다. 대신 저장 공간을 더 쓰고, 행을 넣거나 고치거나 지울 때 인덱스도 함께 고쳐야 해서 갱신은 느려진다.
인덱스는 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 마다 재구성 명령을 따로 둔다