인덱스,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 |