ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Mysql 인덱스
    Mysql 2008. 1. 5. 21:59


    인덱스 만들기

    인덱스의 종류
    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이 삭제되면 인덱스 역시 삭제된다.
Designed by Tistory.