2010년 7월 6일 화요일

데이터베이스(DB)의 인덱스(Index)란?

INDEX란?
 - 테이블에 저장된 데이터를 빠르게 조회하기 위한 데이터베이스 객체
 - B-Tree구조를 가짐(B-Tree Index의 경우)
 - Index는 논리적/물리적으로 테이블과 독립적임

 

생성방법
 - 자동생성 : PK나 Unique제약 조건을 정의할 경우 Unique Index가 자동으로 생성됨

 

생성 Syntax
 CREATE [UNIQUE] INDEX index_name ON table_name(column1[,column2]);

 

종류
 - Oracle : Bitmap, FunctionBased
 - MySQL : FullText, Spatial
 - SQL Server : Cluster, Non_Cluster

 

생성지침
 - Where절의 조회조건이나 조인 조건에 자주 사용되는 경우
 - 컬럼값이 Unique한 컬럼
 - Update가 자주 발생하지 않는 컬럼
 - 해당 컬럼을 통한 Select연산의 결과가 전체 데이터 수의 5%이내인 큰 테이블

 

정보확인
 - Oracle : USER_INDEXS : 테이블의 인덱스 정보,
            User_IND_COLUMNS :  각 인덱스의 컬럼 정보
 - MySQL : Show INDEX From table_name
 - SQLServer : SP_HELPINDEX 테이블명.컬럼명

 

인덱스 Rebuild
 - 특정 영역의 데이터 대량 작업후 Rebuild처리함
 - Oracle : ALTER INDEX index_name REBUILD TABLESPACE tablespace_name;
 - MySQL : ALTER TABLE table_name;
 - SQLServer : DBCC INDEXDEFRAG(db_name,table_name,index_name)
               DBCC DBREINDEX(table_name,index_name)

 

인덱스 삭제
 - DROP INDEX index_name
 - MySQL : DROP INDEX index_name ON table_name


 

댓글 없음:

댓글 쓰기