본문

인덱스(Index)

반응형

# 인덱스(Index)


대용량 데이터를 다루다보면 select문 검색 속도가 엄청 느릴때가 있다. 이럴경우 더 빠르게 데이터를 검색할 수 있게 index key 기준으로 정렬해 indexing 테이블을 따로 만들어 놓는 것이다. 예를들어 사원 테이블이 있다고 하자. 이럴땐 보통 사원번호를 primary key로 잡게 되는데 이럴경우 사원번호로 데이터를 정렬 해놓게 된다. 이때 사원번호로 검색한다면 빠르게 찾겠지만, 사원의 이름으로 검색하게 된다면 데이터 검색이 느려지게 된다. 


생각해보면 사원을 찾을때 이름으로 찾지 다른사람의 사원번호를 외워두었다가 찾진 않는다. 이럴때 원이름으로 index key로 설정해 놓는다면 더 빠른 검색을 지원할 수 있는 것이다index key를 이름으로 생성하면 이름순으로 정렬한 인덱스 테이블을 생성하기 때문에 더 빨리 찾게 된다.


- 인덱스는 데이터 레코드(튜플)에 빠르게 접근하기 위해 <키 값, 포인터> 쌍으로 구성되는 데이터 구조이다.
- 색인이 없으면 특정한 값을 찾기 위해 모든 데이터 페이지를 다 뒤지는 TABLE SCAN이 발생한다.

※ TABLE SCAN : 테이블에 있는 모든 레코드를 순차적으로 읽는 것으로 FULL TABLE SCAN이라고도 한다.
일반적으로 적용 가능한 인덱스가 없거나 분포도가 넓은 데이터를 검색할 때는 FULL TABLE SCAN을 사용한다.


# MySQL에서 create table때 index 생성 방법

index [인덱스이름](컬럼명,..)


# MySQL에서 alter table을 사용하여 index 생성 방법

alter table[테이블명] add index[인덱스이름](컬럼명,..)

alter table[테이블명] drop index[인덱스이름]





- 출처 : http://blog.naver.com/inho860/130179620493

반응형

공유

댓글