티스토리 뷰

Database

[DB 이야기] 인덱스 이용하기.

유쾌한 개발자 anyjava 2008. 8. 29. 15:58
- 인덱스란?

  인덱스란 흔히 쓰는 의미대로 검색을 좀더 용이 하게 하기 위해서 사용하는 도구를 일컷는 말이다. DB 테이블을 구성시에도 인덱스를 추가한다면 쿼릐문 수행 속도의 향상에 대한 수단이 될수 있다.


< 그림 | Week 26 경 하나의 컬럼에 대해 인덱스 설정시 CPU 사용량 >
- 참고 : http://www.wssplex.net/TipnTech.aspx?Seq=317 


-테이블 타입 인덱스의 특성

  • 단일 칼럼에 인덱스르 만들거나 여러 칼럼의 조합에서 복합 인덱스를 구성할 수 있다.
  • 인덱스는 중복된 값을 포함하도록 만들 수도 있고, 오직 유일한 값만을 포함하도록 만들 수도 있다.
  • 어떤 하나의 테이블에 있는 다른 칼럼들로부터 빠르게 값들을 탐색할 수 있기를 원한다면, 한 테이블에 하나 이상의 인덱스를 가질 수 있다.

- 인덱스 만들기

인덱스타입의 종류

  • FULLTEXT 인덱스 : 풀텍스트 검색을 하고자 할때. (MyISAM 테이블에서만 지원)
  • 정규(비 유니크) 인덱스 : 인덱스의 장점을 제공하지만 중복을 허용한다.
  • 유니크 인덱스 : 이것은 중복된 값을 허용하지 않는다.복수 칼럼 인덱스의 경우 조합이 전혀 중복되지 않는다는 것을 보증한다.


인덱스 만들기

  ALTER TABLE 과 CREAT INDEX 를 이요할수 있다. (MySQL은 내부적으로 CREATE INDEX문을 ALTER TABLE로 대체 시킨다.)

ALTER TABLE tbl_name ADD INDEX index_name (index_columns);
ALTER TABLE tbl_name ADD UNIQUE index_name (index_columns);
ALTER TABLE tbl_name ADD PREMARY KEY (index_columns);
ALTER TABLE tbl_name ADD FULLTEXT (index_columns);


+ PRIMARY KEY or UNIQUE 인덱스는 유일한 값을 가지지만, PRIMARY KEY는 단지 이름이 PRIMARY인 UNIQUE인 인덱스 일 뿐이다.

+ 두 인덱스간의 차이는 UNIQUE는 테이블에 복수개를 가질수 있지만 PRIMARY KEY 는 단지 하나만 가능하다. 그리고 PRIMARY KEY는 NULL 값을 포함할수 없는 반면 UNIQUE는 포함 할수 있다. (BDB테이블은 예외가 된다. BD테이블은 UNIQUE 인덱스 안에 단지 하나의 NULL 값만 허용한다.)

CREATE INDEX index_name ON tbl_name (index_columns);
CREATE UNIQUE INDEX index_name On tbl_name (index_columns);
CREATE FULLTEXT INDEX index_name On tbl_name (index_columns);


+ CREATE TABLE 문 내에서 만들기
CREATE TABLE tbl_name
{
    ...
    INDEX index_name (index_columns);
or
    i INT NOT NULL UNIQUE;
or
    j CHAR(10) NOT NULL;
    UNIQUE(j);
    ....
}

- 참고자료
 
MySQL / 사이텍 미디어 / DuBois, 장준영 역


반응형

'Database' 카테고리의 다른 글

RDB의 성능측면의 특징  (0) 2009.12.07
데이터 베이스 정규화(예시)  (0) 2009.05.01
데이터베이스 정규화에 대해서  (0) 2009.04.20
[DB 이야기] 인덱스 이용하기.  (0) 2008.08.29
공유하기 링크
TAG
,
댓글
댓글쓰기 폼