2020041402 / 인덱스(index)
- ORACLE
- 2020. 4. 30.
-- * 오라클 인덱스(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;
'ORACLE' 카테고리의 다른 글
2020040903 / DICR(Data Integrity Constraint Rule) (0) | 2020.04.30 |
---|---|
2020041003 / 11_3) non-eqie join (비등가조인) (0) | 2020.04.30 |
2020041302 / 뷰(View) (0) | 2020.04.30 |
2020040902 - Transaction (트랜잭션) (0) | 2020.04.30 |
0416 - 02 - eXERD 설치 (0) | 2020.04.30 |