본문 바로가기
2019/ORACLE

SQL Index

by SOLYI 2019. 11. 26.

인덱스 : 빠른 검색을 위한 기능

1
2
3
4
5
6
7
8
16. 인덱스:빠른 검색을 위해
 
 -장점:검색속도, 시스템전체성능 향상
 -단점:추가공간필요, 생성시 시간소요, 자료 변경이 잦을경우 성능저하
 
 -생성 create index 인덱스이름 on 테이블명(컬럼명)
 
 -삭제 drop index 인덱스이름
cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
--index
--어느 테이블에 어떤 인덱스를 걸었는지만 확인 가능
--어느 컬럼에 걸었는지 알수없음
 
desc user_indexes;
--어느 테이블, 컬럼에 인덱스를 걸었는지 확인하는 방법
desc user_ind_columns;
 
 
select index_name, index_type, table_owner, table_name, table_type
from user_indexes;
 
--데이터 딕셔너리 뷰로 인덱스의 생성 유무 확인
select index_name, table_name, column_name
from user_ind_columns;
 
--인덱스 기능을 확인하기 위한 테이블 생성
create table emp02
as 
    select * from emp;
 
--여러번 실행해서 자료 많이 생성
insert into emp02 select * from emp02;
 
select count(*from emp02;
 
--인덱스 기능 확인을 위해 특정 자료 추가
insert into emp02(empno, ename)
values(1111,'hong');
 
--인덱스 생성 이전 실행 속도(0.066초 소요)
--생성 이후 실행속도(0.001~2초)
select distinct empno, ename
from emp02
where ename = 'hong';
 
--인덱스 생성해두면 위 검색시 (0.001~2초 소요)
create index index_emp02_ename
on emp02(ename);
--많이쓰면 메모리 효율 안좋고, 자료 구조가 변경 될 경우는 별로 좋지않다.
 
select *
from user_ind_columns
where table_name in('EMP02');
 
--인덱스 삭제
drop index index_emp02_ename;
 
--다른 인덱스 생성
create index idx_emp02_job
on emp02(job);
 
--인덱스 조회
select index_name, table_name, column_name
from user_ind_columns
where table_name in('EMP02');
 
select * from user_ind_columns
where table_name = 'EMP02';
 
--인덱스는 검색 속도를 향상시키지만 계획성 없이 
--너무 많은 인덱스를 지정하면 오히려 성능 저하가 발생한다.
cs
반응형

'2019 > ORACLE' 카테고리의 다른 글

SQL PLSQL Procedure  (0) 2019.11.26
SQL Sequence  (0) 2019.11.26
SQL 가상테이블 뷰(추후수정)  (0) 2019.11.26
SQL 제약조건(추후수정)  (0) 2019.11.26
SQL DDL (추후수정)  (0) 2019.11.26