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;