unique 인덱스는 non unique 인덱스와는 다르게 컬럼의 값이 unique해야지만 걸립니다.

예: emp 테이블의 경우 empno 같은 컬럼에 unique 인덱스가 걸립니다.

non unique 인덱스보다 unique 인덱스가 훨씬 더 성능이 좋은 인덱스입니다.

※ unique 인덱스를 생성하는 방법 2가지 ?

  1. 수동 :
create unique index emp_ename_un
on emp(ename); .
  1. 자동 : primary key 제약이나 unique 제약을 걸면 자동으로 걸립니다. (SQLD, SQLP)
alter table emp
add constraint emp_empno_pk primary key(empno);
select index_name, uniqueness
from user_indexes
where table_name = 'EMP';

실습예제1. 월급에는 non unique 인덱스를 생성하고 다음과 같이 sql을 실행하면 오라클은 ename에 걸린 unique 인덱스와 sal에 걸린 non unique 인덱스 중 어떤 인덱스를 선택할까?

create index emp_sal on emp(sal);

select empno, ename, sal
from emp
where ename = 'SCOTT' and sal = 3000;

만약 중복되지 않았다면 non unique 인덱스 보다는 unique인덱스를 걸어주는게 성능 향상을 위해 바람직합니다.

문제 45. 아래의 sql의 검색속도를 높이기 위한 가장 좋은 인덱스를 생성하시오!

select * 
from emp19
where email ='[email protected]';
create unique index emp19_email_un on emp19(email);

select * 
from emp19
where email ='[email protected]';