SQL

SQL - INDEX

황민준 2022. 12. 10. 16:06

*INDEX

검색을 빠르게 하기 위해서 사용한다.

장점 : 검색 속도가 빨라지고 시스템 부하를 줄여 성능 향상이 된다.

단점 : 인덱스 생성에 시간과 공간이 필요하고 삽입/삭제/갱신이 빈번히 일어날 경우 성능 저하가 발생한다.

 

고유(UNIQUE) 인덱스

중복되지 않은 데이터를 인덱스로 지정

기본키, UNIQUE를 걸면 자동으로 생성되는 인덱스

유니크 인덱스는 중복되는 데이터가 포함될 경우 에러가 발생한다. -> 당연히 유니크이기 때문에

 

비고유(NON-UNIQUE) 인덱스

외래키의 경우 이 인덱스가 생성된다.

중복이 있는 컬럼에 사용 가능하다.

 

결합(COMBINATION) 인덱스

복합키와 마찬가지로 최대 16개까지 컬럼을 조합해서 인덱스로 저장할 수 있다.

일반적으로 단일 컬럼으로 UNIQUE INDEX를 만들 수 없을 경우 사용한다.

 
-- 1) 고유(UNIQUE) 인덱스
-- 중복되지 않은 데이터를 인덱스로 지정
-- PRIMARY KEY, UNIQUE를 걸면 자동으로 생성되는 인덱스
-- CREATE UNIQUE INDEX [인덱스 명] ON [테이블 명]([컬럼 명]);
-- Duplicate entry 'kim' for key 'emp_ename_idx'
-- 유니크 인덱스는 중복되는 데이터가 있을 경우 에러가 발생한다.
create unique index emp_ename_idx on emp(ename);
desc emp;
select * from emp;

-- 2) 비고유(NON-UNIQUE) 인덱스
-- 외래키의 경우 이 인덱스가 생성된다.
-- 중복이 있는 컬럼에 사용 가능하다.
-- CREATE INDEX [인덱스 명] ON [테이블 명]([컬럼 명]);
create index emp_ename_idx on emp(ename);

-- 3) 결합(COMBINATION) 인덱스
-- 복합키와 마찬가지로 최대 16개까지 컬럼을 조합해서 인덱스로 저장할 수 있다.
-- 일반적으로 단일 컬럼으로 UNIQUE INDEX를 만들 수 없을 경우 사용한다.
create unique index emp_combi_idx on emp(ename, job, deptno);

-- 4) 인덱스 확인
show index from emp;

-- 5) 인덱스 삭제(인덱스는 테이블 속성으로 취급)
-- ALTER TABLE [테이블 명] DROP INDEX [인덱스 명];
alter table emp drop index emp_ename_idx;
alter table emp drop index emp_combi_idx;