index
인덱스는 데이터베이스 분야에 있어서 테이블에 대한 동작의 속도를 높여주는 자료구조를 일컫는다. 인덱스는 테이블 내의 1개의 컬럼, 혹은 여러개의컬럼을 이용하여 생성될 수 있다. 고속의 검색 동작뿐만 아니라 레코드 접근과 관련 효율적인 순서 매김 동작에 대한 기초를 제공한다. 인덱스를 저장하는 데 필요한 디스크 공간은 보통 테이블을 저장하는 데 필요한 디스크 공간보다 작다. 왜냐하면 보통 인덱스는 키-필드만 갖고 있고, 테이블의 다른 세부 항목들은 갖고 있지 않기 때문이다. 관계형 데이터베이스에서는 인덱스는 테이블 부분에 대한 하나의 사본이다. 인덱스는 고유 제약 조건을 실현하기 위해서도 사용된다. 고유 인덱스는 중복된 항목이 등록되는 것을 금지하기 때문에 인덱스의 대상인 테이블에서 고유성이 보장된다.
책의 찾아보기(index, 색인)와 같이 원하는 내용을 바로 찾을 수 있도록 지원.
테이블의 데이터 조회 시 동작속도를 높여주는 자료구조.
데이터의 위치를 빠르게 찾아주는 역할
컬럼의 값과 레코드가 저장된 주소를 키와 값의 쌍으로 인덱스를 만들어 둠.
MYI(MySql Index) 파일에 인덱스 저장.
index의 문제점
index의 종류
제약 조건에 따른 Index 결정
Index 생성 전략
자동생성 index
create [unique] index 인덱스이름
on 테이블이름 (열이름) [asc|desc]
create index 문으로 인덱스를 만들면 보조 인덱스가 생성
create index 문의 unique 옵션은 고유한 인덱스를 만들 때 사용
asc, desc 로 정렬 방식 지정
index_type은 생략 가능하며, 생략할 경우 기본 값이 B-tree형식 사용
create index문으로는 클러스터형 인덱스를 만들 수 없으며, 클러스터형 인덱스를 만들려면 alter table을 사용해야 함
ex)
alter table ssafy modify column user_id char(4) primary key;
index를 활용한 select
full table scan
클러스터형 인덱스 참조
index 삭제
drop index 인덱스이름 on 테이블이름;
alter table 테이블이름 drop primary key;