2020041402 / 인덱스(index)

-- * 오라클 인덱스(index)


-- [1] 인덱스 정보 조회

select index_name, table_name, column_name

from user_ind_columns

where table_name in('EMP', 'DEPT');




-- [2] 조회 속도 비교하기

-- 사원 테이블 복사하기

drop table emp01 purge;


create table emp01 -- 테이블 생성하면서 복사하기

as

select *from emp;


select index_name, table_name, column_name

from user_ind_columns

where table_name in('EMP', 'EMP01');

-- 주의) 데이터 복사 시에 테이블 구조와 내용만 복사될 뿐이지 제약 조건은 복사되지 않는다


-- 데이터 삽입

insert into emp01 select * from emp01; -- emp01의 데이터를 불러와서 emp01 밑에 복사해 준다 최초 14개 밑에 14개를 복사하므로 28개가 된다 실행시 마다 밑으로 추가된다




insert into emp01(empno, ename) values(8010, 'ANGEL '); -- 이 행만 실행해도 아래 명령어 때문에 경과 시간도 표시가 나타난다 (1/1000 초로 표시가 된다)


set timing on;


select distinct empno, ename -- distinct 명령어 중복된 데이터는 한번만 출력하는 명령어

from emp01

where ename = 'ANGEL';

-- 인출된 모든 행 1(0.089초)이라고 실행 시간이 출력된다

--인덱스가 연결되지 않은 상태의 시간이다




-- [3] 인데스 생성

-- 기본 키(프라미머리 키)나 유일키가 아닌 컬럼에 대해서 인덱스를 지정하려면

-- create index 명령어를 사용하여 생성

create index idx_emp01_ename

on emp01(ename);


-- 위의 작성한 실행문

select index_name, table_name, column_name

from user_ind_columns

where table_name in('EMP', 'EMP01');


-- 재실행하여 속도 체크

select distinct empno, ename -- distinct 명령어 중복된 데이터는 한번만 출력하는 명령어

from emp01

where ename = 'ANGEL';

-- 인출된 모든 행 1(0.089초)이라고 실행 시간이 출력된다

--인덱스가 연결되지 않은 상태의 시간이다




-- [4] 인덱스 제거

drop index idx_emp01_ename;


-- 위의 작성한 실행문

select index_name, table_name, column_name

from user_ind_columns

where table_name in('EMP01'); -- 삭제 되었는지 확인


drop table emp01 purge;






































댓글

Designed by JB FACTORY