본문 바로가기

오라클

인덱스(Index)

인덱스,Index

- 색인

- 검색(select)을 빠른 속도로 하기 위해서 사용하는  기술

-오라클은 테이블 생성 시 인덱스를 따로 생성하지 않아도 자동으로 생성된다. -> PK, Unique 컬럼 자동으로 생긴 생성

    ->num 컬럼 검색 속도( PK> Index 생성) >>>name 컬럼 검색 속도

- 문자보다 숫자가 더 빠르다.


인덱스 장,단점

장점

- 검색 처리 속도를 향상 시킨다.

- 그룹화 작업의 속도를 향상 시킨다.

- 테이블 행의 고유성을 강화시킬 수 있습니다.

- 테이블의 기본키는 자동으로 인덱스 됩니다.

단점

- 비용이 비싸다

-.mdb파일 크기가 늘어난다.

- 인덱스를 생성하는데 시간이 많이 소요될 수 있다.
- 인덱스 된 필드에서 데이터를 업데이트 하거나, 레코드를 추가 또는 삭제할 때 성능이 떨어진다.



인덱스 사용해야 하는 경우

1. 테이블 행의 갯수가 많은 경우

2. 인덱스를 적용한 컬럼이 where 절에 많이 사용되는 경우(****)

3. join할 때 사용하는 컬럼 (on 부모테이블.PK =  자식테이블.FK)(*****)

4. 검색 결과가 원본 테이블 데이터 2~4%에 해당하는 경우(******)

5. 해당 컬럼이 null을 포함하는 경우(색인에 null이 제외)


인덱스 사용하면 안 좋은 경우

1. 테이블 행의 갯수가 적은 경우 

2. 검색 결과가 원본 테이블 많은 비중을 차지하는 경우

3. 원본 테이블의 삽입, 수정, 삭제가 빈번한 경우(*****)


인덱스 생성

create index 인덱스명 on  테이블명(컬럼);


ex)고유 인덱스

-인덱스 걸린 컬럼 >seq > PK, Unique

create index idxIndexSeq

    on tblIndex(seq)



ex) 단일 인덱스 

-인덱션 걸 컬럼이 1개일 때..

create index idxIndexEmail

    on tblIndex(email);


select * from tblIndex where email = 'fire@live.com'; --idxIndexEmail 동작 O

select * from tblIndex where email = 'fire@live.com' and age =39; --idxIndexEmail 동작 X, idxIndexEmailAge 동작 O

select * from tblIndex where substr(name,1,1) = '김'; --idxIndexName 동작X, idxIndexLastname 동작O

select * from tblIndex where name ='김길동'; --idxIndexName 동작O, idxIndexLastname 동작X

select * from tblIndex where (height+weight) >200;


ex) 결합(다중) 인덱스

create index idxIndexEmailAge

    on tblIndex(eamil,age);


create index idxIndexLastname

    on tblIndex(substr(name,1,1));

    

create index idxIndexBMI

    on tblIndex((height+weight));

'오라클' 카테고리의 다른 글

페이징 (웹)  (0) 2018.09.05
Alter/Drop (DDL)  (0) 2018.09.04
트랜잭션(Transaction)  (0) 2018.09.04
유니온(Union)  (0) 2018.09.04
뷰(View)  (0) 2018.09.03