인덱스란?
인덱스는 테이블에 붙여진 색인.
역할 : 검색 속도의 향상
목차만 존재하는 책은 없음
⇒ 테이블과 별개로 독립된 데이터 베이스 객체로 작성되지만 인덱스 만으로는 아무 의미가 없다
⇒ 대부분의 데이터 베이스에서 테이블을 삭제하면 인덱스도 같이 삭제됨
검색에 사용하는 알고리즘
대표적으로 쓰이는 검색 알고리즘으로는 ‘이진 트리 (binary tree, b-tree)’가 있다.
이진트리는 탐색 방법이라기보다 데이터 구조에 가깝다.
‘이진 탐색’을 검색하기 쉬운 구조로 만든 것이 ‘이진 트리’이다.
- 풀 테이블 스캔(full table scan)
- 인덱스가 지정되지 않은 테이블을 검색함. 행이 1000건 있으면 최대 1000번 값을 비교함
- 이진 탐색(binary scan)
- 차례로 나열된 집합에 대해 유효한 검색 방법
- 집합을 반으로 나누어 조사
- ex) 1~100중 30 을 찾기 위해서 1,2,3,4..... 이렇게 찾는게 아니고
- 50보다 큼?작음?
- 거기서 또 가운데 값 25 보다 큼?작음?
- 이런식으로 나누어 찾는 것.
- 이진 트리에는 중복하는 값을 등록할 수 없다~!
인덱스 작성과 삭제
인덱스 작성
인덱스는 데이터베이스 객체의 하나로 DDL을 사용해서 작성하거나 삭제
데이터베이스 객체가 될지, 테이블의 열처럼 취급될 지는 데이터베이스 제품에 따라 다름.
ORACLE이나 DB2 : 스키마객체, 그래서 스키마 내 이름 중복되지 않도록 관리됨
SQLserver , MySQL : 테이블 내의 객체, 테이블 내 이름이 중복되지 않도록 지정해서 관리
작성한 인덱스의 열을 WHERE 구로 조건을 지정하여 SELECT 명령으로 검색하면 처리속도가 향상됨.
CREATE INDEX 인덱스명 ON 테이블명(컬럼명);
인덱스 삭제
인덱스만 삭제 시
DROP INDEX 인덱스명;
인덱스는 테이블에 의존하는 객체이므로 DROP TABLE 시 테이블에 작성된 인덱스도 자동으로 삭제됨.
참고 자료 : SQL 첫걸음 / 아사이 아츠시 지음/ 한빛미디어
'데이터베이스 > oracle' 카테고리의 다른 글
[함수] 1 일 1 함수 : ROLLUP의 쓰임 (0) | 2024.11.27 |
---|---|
[함수] 1 일 1 함수 : 그룹 내 순위를 매기는 함수(RANK, DENSE_RANK, ROW_NUMBER) (0) | 2024.11.26 |
토드(Toad)에서 다른 스키마의 테이블로 데이터 복사하기 (0) | 2024.03.25 |
TRANSLATE 함수로 정규식같은 효과 내기 (0) | 2023.09.05 |