728x90
반응형
Index를 생성하는 이유?
인덱스는 데이터베이스에서 테이블의 검색 성능을 높여주는 방법입니다.
관계형 데이터베이스에서는 B+Tree구조로 된 index를 사용하여 검색 속도를 향상시킵니다.
특히 select ~ where 쿼리처럼 특정 데이터를 찾을 때 빠른 속도로 검색할 수 있게 해 줍니다.
중복이 높은 값은 인덱스를 생성하지 않는 것이 크게 의미가 없습니다.
왜냐하면 인덱스의 이점보다 추가 저장공간이나 데이터 수정에 대한 성능 저하가 더 크기 때문입니다.
인덱스는 테이블 크기의 10% 정도의 저장 공간을 차지합니다.
'클러스터형 인덱스'와 '보조 인덱스'
Clustering index : 특정 컬럼을 기본키로 지정하면 자동으로 인덱스가 생성되고 테이블 자체가 정렬된 인덱스가 됩니다. (컬럼을 기본키로 지정하면 테이블이 기본키를 정렬함)
Secondary index : 별도의 공간에 인덱스를 생성합니다. (create index 혹은 고유키를 지정하면 생성)
728x90
인덱스를 생성하는 방법은 다음과 같습니다.
- 테이블 생성: 인덱스를 생성할 테이블이 이미 생성되어 있어야 합니다.
- 필드 선택: 인덱스를 생성할 필드를 선택하십시오. 주로 자주 사용되는 검색 조건이나 정렬 기준에 대한 필드를 선택합니다.
- 인덱스 생성: 선택한 필드에 대한 인덱스를 생성하는 SQL 명령을 실행합니다. 예를 들어, 다음과 같은 SQL 명령을 사용할 수 있습니다.
Oracle
-- 복합 인덱스
CREATE INDEX index_name ON table_name (field1, field2, ...);
-- 유니크 인덱스
CREATE UNIQUE INDEX emp_uk ON emp(empno, mgr)
Mysql
-- 복합 인덱스
CREATE INDEX index_name ON table_name (field1, field2, ...);
-- 유니크 인덱스
CREATE UNIQUE INDEX emp_uk ON emp(empno, mgr)
UNIQUE 인덱스를 생성하면 인덱스로 지정된 컬럼은 해당 테이블에서 유일한 값이어야 한다. 해당 컬럼에 중복된 값이 입력되면 무결성 오류가 발생하게 된다. UNIQUE 인덱스는 데이터 변경이 발생할 때마다 중복체크를 하기 때문에 일반 인덱스에 비하여 데이터 변경이 느리며, 유일 값을 꼭 체크해야 하는 특별한 경우가 아니면 많이 사용하지 않는다.
728x90
반응형