인덱스
-데이터 검색 효율을 증진 시키기 위해 사용
-WHERE 절의 조건처리에 사용되는 컬럼등에 적용하여 처리 효율성 증진
-정렬, 그릅화의 기준 컬럼에 적용
-별도의 저장공간(INDEX FILE)과 처리시간이 소요됨
-데이터의 변동이 심한경우 인덱스파일의 재 구성 많은 자원(시간, 등) 소요
1)인덱스가 필요한 컬럼
.검색에 자주 사용되는 컬럼
.기본키와 외래키
.JOIN, SORT에 사용되는 컬럼
2)인덱스가 불필요한 컬럼
.도메인이 적은 컬럼(성별, 학년등)
.검색보다 DML이 더 중요한 경우
3)인덱스의 종류
(1)Unique/Non-unique
.중복값 허용여부에 따른 분류
.NULL은 허용되나 Unique인 경우 하나만 허용
(2)Normal Index
.기본 인덱스
.컬럼값과 rowid를 이용하여 주소 산출
(3)funotion-based index
.함수가 적용된 조건절이 사용된 경우 생성되는 인덱스
(4)Bitmap index
.컬럼값과 rowid의 값을 binary로 조합한 값으로 주소 산출
.차수(Cardinality)가 작은경우(나이, 성별 등)효율적
.빈번한 변경의 경우 연산과정이 소요되어 비효율적
4)인덱스 사용형식
CREATE [UNIQUE|BITMAP]INDEX 인덱스명
ON 테이블명(컬럼명1[,컬럼명2,...][ABC|DESC]);
.'테이블'의 '컬럼'들을 기준으로 오름차군(ASC)또는 내림차순(DESC)
으로 인덱스 생성.(기본은 ASC임)
NULL값을 가질수 있다 하지만 하나만 가질수있다.
인덱스명은 IDX를 사용한다
사용예)사원테이블에서 사원명을 기준으로 인덱스를 생성하시오
CREATE INDEX IDX_EMP01
ON EMPLOYEES(EMP_NAME);
CREATE INDEX IDX_MEM01
ON MEMBER(SUBSTR(MEM_REGNO2,4));
CREATE INDEX IDX_KOR_LOAN
ON KOR_LOAN_STATUS(PERIOD, REGION);
(인덱스 활용X)
SELECT *
FROM KOR_LOAN_STATUS
WHERE PERIOD='201111'; --인덱스 생성 효과가 거의 없다
(인덱스활용)
SELECT *
FROM KOR_LOAN_STATUS
WHERE PERIOD='201111'
AND REGION IN('경남','서울','대전')
5)인덱스의 재구성
-데이터의 갑입, 삭제, 정신이 발새하면 인덱스는 재 구성됨
-재구성은 WORK SPACE가 변경되거나 데이터의 삽입삭제가 다수 발생된 직후
REBUILD 명령으로 수행
(사용형식)
ALTER INDEX 인덱스명 REBUILD;
(사용예)
ALTER INDEX IDX_KOR_LOAN REBUILD;
'DB > SQL(오라클)' 카테고리의 다른 글
오라클(SQL)동의어 (SYNONYM)객체 (0) | 2021.03.17 |
---|---|
오라클(SQL)SEQUENCE 객체 (0) | 2021.03.17 |
오라클(SQL)view객체 (0) | 2021.03.17 |
오라클(SQL)집합 연산자(MINUS, UNION, UNION ALL, INTERSECT) (0) | 2021.03.17 |
오라클(SQL)다중행 서브쿼리 (0) | 2021.03.17 |