인덱스(index)는 테이블에서 원하는 데이터를 쉽고 빠르게 찾기위해 사용한다. mysql은 데이터를 검색할때 첫번째 필드부터 차례대로 테이블 전체를 검색한다. 따라서 테이블이 클수록 데이터를 탐색하는 시간이 많이 늘어나게된다. 인덱스를 사용하면 테이블 전체를 읽지 않고 검색과 질의에 대한 처리가 빠르게 이루어진다. 이러한 인덱스는 사용자가 직접 접근할 수 없으며, 검색과 질의에 대한 처리에서만 사용된다.
주의 : 인덱스가 포함한 데이터의 삽입 삭제 수정 작업이 원본테이블에서 이뤄질 경우, 인덱스도 같이 수정되어야 하므로 인덱스는 수정보다는 검색이 자주 사용되는 테이블에서 사용하는 것이 더 좋다.
[ 인덱스(index)의 장점과 단점 ]
<장점>
<단점>
create문을 사용하여 인덱스(index)를 생성한다.
CREATE INDEX 인덱스이름
ON 테이블이름 (필드이름1, 필드이름2, ...)
CREATE INDEX NameIdx On user(Name);
SHOW INDEX FROM 테이블이름
Table : 테이블의 이름을 표시함.
Non_unique : 인덱스가 중복된 값을 저장할 수 있으면 1, 저장할 수 없으면 0을 표시함.
Key_name : 인덱스의 이름을 표시하며, 인덱스가 해당 테이블의 기본 키라면 PRIMARY로 표시함.
Seq_in_index : 인덱스에서의 해당 필드의 순서를 표시함.
Column_name : 해당 필드의 이름을 표시함.
Collation : 인덱스에서 해당 필드가 정렬되는 방법을 표시함.
Cardinality : 인덱스에 저장된 유일한 값들의 수를 표시함.
Sub_part : 인덱스 접두어를 표시함.
Packed : 키가 압축되는(packed) 방법을 표시함.
Null : 해당 필드가 NULL을 저장할 수 있으면 YES를 표시하고, 저장할 수 없으면 ''를 표시함.
Index_type : 인덱스에 사용되는 메소드(method)를 표시함.
Comment : 해당 필드를 설명하는 것이 아닌 인덱스에 관한 기타 정보를 표시함.
Index_comment : 인덱스에 관한 모든 기타 정보를 표시함.