인덱스 INDEX

Oracle 2014. 11. 13. 16:04

INDEX - 인덱스의 내부구조는 B* 트리 형식으로 구성, 검색속도의 향상

장점 - 검색 속도가 빨라짐 ,시스템 부하를 줄여 전체성능을 향상

단점 - 추가공간 필요,인덱스생성 시간 발생,데이터 변경작업(INSERT/UPDATE/DELETE)자주 일어날 경우 오히려 성능저하

INDEX는 기본키나 유일키 를 지정하면 자동으로생성 (USER_COLUMNS,USER_IND_COLUMNS 데이터 딕셔너리 뷰에저장)

INDEX 정보 보는예

EX) SELECT INDEX_NAME , TABLE_NAME, COLUMN_NAME

FROM USER_IND_COLUMNS

WHERE TABLE_NAME_IN('EMP','DEPT');

오라클 검색 시간 측정

EX) SET TIMING ON ;결과도출 시간 나옴.

인덱스 생성법

형식 CREATE INDEX index_name ON table_name(column_name)

인덱스 삭제

형식 DROP INDEX index_name;

인덱스 생성 명령

ex) CREATE INDEX IDX_EMP01_ENAME ON EMP01(ENAME);

EX) SELECT DISTINCT EMPNO,ENAME FROM EMP01 WHERE ENAME='SYJ'//생성시 속도가 짦아졌음을 알수 있음. 

EX) DROP INDEX IDX_EMP01_ENAME; //생성한 인덱스를 삭제

인덱스의 사용할때와 말아야할때


 인덱스를 사용

인덱스를 사용하지 말아야할떄 

 테이블의 행의 수가 많을때

테이블에 행의수가 적을때 

WHERE문에 해당 컬럼이 많이 사용될떄 

WHERE문에 해당 컬럼이 자주 사용되지 않을때 

검색 결과가 전체 데이터의 2~4%일때 

검색 결과가 전체 데이터의 10~15%일떄 

JOIN에 자주 사용되는 컬럼이나 NULL을 포함하는 컬럼이 많을때 

테이블에 DML작업이 많은경우(INSERT,DELETE,UPDATE) 

인덱스는 재생성 시켜주기전까지 기존 인덱스 정보를 빈공간으로 가지고있게 된다. 

재생성 명령

형식 ALTER INDEX index_name REBUILD;

EX)ALTER INDEX IDX_EMP01_DEPTNO REBUILD;

인덱스의 종류 

고유와 비고유 

고유 - 중복된 데이터가 없는 단일 데이터에만 선언

비고유 - 중복된 데이터가 있는 경우

형식 CREATE UNIQUE INDEX index_name ON table_name(column_name);

ex) CREATE UNIQUE INDEX IDX_DEPT01_DEPTNO ON DEPT01(DEPTNO);

한개의 컬럼으로 구성한 INDEX는 단일인덱스 두개이상의 컬럼으로 구성할시 결합 인덱스 라함.

EX) CREATE INDEX IDX_DEPT01_COM ONDEPT01(DEPTNO,DNAME);

함수기반인덱스 

EX) CREATE INDEX IDX_EMP01_ANNSAL ON EMP01(SAL*12);//검색조건이 SAL*12일때 해당 인덱스를 탐





블로그 이미지

은호아빠

여행, 맛집, 일상, 프로그래밍, 개발자, 윈도우, 웹, jsp, spring, db, mysql, oracle, c#

,