본문 바로가기

데이터베이스/오라클DB

인덱스란?

인덱스란?

인덱스는 테이블에 붙여진 색인.

역할 : 검색 속도의 향상

목차만 존재하는 책은 없음

⇒ 테이블과 별개로 독립된 데이터 베이스 객체로 작성되지만 인덱스 만으로는 아무 의미가 없다

⇒ 대부분의 데이터 베이스에서 테이블을 삭제하면 인덱스도 같이 삭제됨

검색에 사용하는 알고리즘

대표적으로 쓰이는 검색 알고리즘으로는 ‘이진 트리 (binary tree, b-tree)’가 있다.

이진트리는 탐색 방법이라기보다 데이터 구조에 가깝다.

‘이진 탐색’을 검색하기 쉬운 구조로 만든 것이 ‘이진 트리’이다.

  • 풀 테이블 스캔(full table scan)
    • 인덱스가 지정되지 않은 테이블을 검색함. 행이 1000건 있으면 최대 1000번 값을 비교함
  • 이진 탐색(binary scan)
    • 차례로 나열된 집합에 대해 유효한 검색 방법
    • 집합을 반으로 나누어 조사
    • ex) 1~100중 30 을 찾기 위해서 1,2,3,4..... 이렇게 찾는게 아니고
      1. 50보다 큼?작음?
      1. 거기서 또 가운데 값 25 보다 큼?작음?
    • 이런식으로 나누어 찾는 것.
    • 이진 트리에는 중복하는 값을 등록할 수 없다~!

인덱스 작성과 삭제

인덱스 작성

인덱스는 데이터베이스 객체의 하나로 DDL을 사용해서 작성하거나 삭제

데이터베이스 객체가 될지, 테이블의 열처럼 취급될 지는 데이터베이스 제품에 따라 다름.

ORACLE이나 DB2 : 스키마객체, 그래서 스키마 내 이름 중복되지 않도록 관리됨

SQLserver , MySQL : 테이블 내의 객체, 테이블 내 이름이 중복되지 않도록 지정해서 관리

작성한 인덱스의 열을 WHERE 구로 조건을 지정하여 SELECT 명령으로 검색하면 처리속도가 향상됨.

CREATE INDEX 인덱스명 ON 테이블명(컬럼명);

인덱스 삭제

인덱스만 삭제 시

DROP INDEX 인덱스명;

인덱스는 테이블에 의존하는 객체이므로 DROP TABLE 시 테이블에 작성된 인덱스도 자동으로 삭제됨.

 

참고 자료 : SQL 첫걸음 / 아사이 아츠시 지음/ 한빛미디어