데이터베이스

데이터베이스 객체 종류 - 인덱스

야생늑대 2022. 4. 19. 19:15
반응형

① 인덱스란?

  • 색인이라는 뜻의 인덱스(index)는 목차나 색인을 통해  책 내용을 찾는 것과 마찬가지로 오라클 데이터베이스에서 데이터 검색 기능의 향상을 위해 테이블 열에 사용하는 객체를 말한다.
  • 테이블에 보관된 특정 행 데이터의 주소, 즉 위치 정보를 책 페이지처럼 목록으로 만들어 놓은 것이다.
  • 인덱스는 테이블 열을 여러 가지 분석을 통해 선정하여 설정할 수 있다.
  • 인덱스 사용 여부에 따라 데이터 검색방식을 두 가지로 나눈다.

    ◎ Table Full Scan  : 테이블 데이터를 처음부터 끝까지 검색하여 원하는 데이터를 찾는 방식

    ◎ Index Scan : 인덱스를 통해 데이터를 찾는 방식

  • 인덱스도 오라클DB의 객체이므로  USER__INDEXES, USER_IND_COLUMNS와 같은 데이터 사전을 사용한다.
  • 인덱스는 사용자가 직접 특정 테이블의 열에 지정할 수도 있지만 열이 기본키(primary key) 또는 고유키(unique key) 일 경우에는 자동 생성된다.

 

② 인덱스 생성

▶ 기본형식 ( 지정한 각 열 별로 ASC 나 DESC로 인덱스 정렬순서를 정할 수도 있다.)

CREATE INDEX 인덱스 이름
	ON 테이블 이름 (열 이름1 ASC or DESC,
    				열 이름2 ASC or DESC,
                    ...					);

▶ IDX_BUSINFO_BITYPE 인덱스가 생성되었다. 정렬은 오름차순(ASC)이 기본값이다.

②-1 여러 가지 인덱스 생성 방식

방식 사용
단일인덱스(single index) CREATE INDEX IDX_NAME
                ON EMP(SAL);
복합인덱스(concatenated index)
결합인덱스(composite index)
-두 개 이상 열로 만들어지는 인덱스
-WHERE절의 두 열이 AND 연산으로 묶이는 경우
CREATER INDEX IDX_NAME
                ON EMP(SAL, ENAME,...);
고유 인덱스(unique index)
-열에 중복 데이터가 없을 때 사용
-UNIQUE 키워드를 지정하지 않으면 비고유 인덱스(non unique index)가 기본 값
CREATE UNIQUE INDEX IDX_NAME
                ON EMP(EMPNO);
함수 기반 인덱스(function based index)
-열에 산술식 같은 데이터 가공이 진행된 결과로 인덱스 생성
CREATE INDEX IDX_NAME
                ON EMP(SAL*12 + COMM);
비트맵 인덱스(bitmap index)
- 데이터 종류가 적고 같은 데이터가 많이 존재할 때 주로 사용
CREATE BITMAP INDEX IDX_NAME 
                ON EMP(JOB);

 

③ 인덱스 삭제

▶인덱스 삭제는 DROP 명령어를 사용한다.

DROP INDEX 인덱스 이름;

DROP INDEX IDX_BUSINFO_BITYPE;  -- 위에서 생성했던 인덱스 삭제

  • 인덱스는  데이터 접근 밑 검색 속도 향상을 위해 사용하는 객체이지만 인덱스 생성이 항상 좋은 결과로 이어지지는 않는다.
  • 정확한 데이터 분석에 기반을 두지 않은 인덱스의 무분별한 생성은 오히려 성능을 떨어뜨리는 원인이 되기도 한다. 
  • 인덱스는 데이터 종류, 분포도, 조회하는 SQL의 구성, 데이터 조작 관련 SQL 문의 작업 빈도, 검색 결과가 전체 데이터에서 차지하는 비중 등 많은 요소를 고려하여 생성해야 한다.
반응형

'데이터베이스' 카테고리의 다른 글

제약조건  (0) 2022.04.20
데이터베이스 객체 - 뷰  (0) 2022.04.19
데이터베이스 객체 종류 - 데이터사전  (0) 2022.04.19
세션과 읽기 일관성의 의미, LOCK  (0) 2022.04.18
트랜잭션 제어 ROLLBACK, COMMIT  (0) 2022.04.18