인덱스 만들기
인덱스의 종류
1. 정규(비 유니크) 인덱스 - 중복을 허용하는 인덱스
2. 유니크 인덱스 - 중복을 허용하지 않는 인덱스
3. 풀 텍스트 인덱스 - MyIsam 테이블에서만 지원되는 인덱스
인덱스 생성 방법
CREATE TABLE $tbl_name (
$column_name $column_type
....
index $index_name $column_name, /* 정규 인덱스 */
unique $index_name $column_name, /* 유니크 인덱스 */
primary key $column_name, /* 유니크(primary key) 인덱스 */
fulltext $index_name $column_name /* 풀 텍스트 인덱스 */
);
인덱스를 가지는 column은 null을 가질수 있는가?
테이블 타입중 ISAM과 MySQL 4.0.2 이전의 HEAP 타입은 인덱스를 가지는 column은 null을 가질수 없게 되어있다.
인덱스를 가지는 column의 값 가운데 맨 처음의 몇 바이트만 인덱스로 지정하는 방법
이 방법을 사용하는 이유는 컬럼 전체를 인덱스로 만드는 것보다 더 빠른 속도를 보여준다.
하지만 항상 빠른 속도를 보여주는 것은 아니고 처음 몇 바이트가 대부분 다른 값을 보일 경우에 한해서 이다.
- InnoDB 타입은 지원하지 않는다.
CREATE TABLE $tbl_name (
name CHAR(30) NOT NULL
INDEX ( name(10) )
);
위의 예제는 name을 정규 index로 만든다. 하지만 30byte 모두를 인덱스로 생성하는 것이 아니고, 초기의 10byte만 인덱스를 생성하는데 사용한다.
인덱스 삭제 방법
DROP INDEX $index_name on $table_name
ALTER TABLE $table_name DROP INDEX $index_name
인덱스를 걸어논 column이 삭제되면 인덱스 역시 삭제된다.