일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- oracle
- 러블리즈
- 핑거스타일
- 신입
- 말 더듬
- 장범준
- 오라클 아키텍처
- I'm fine thank you
- 악보
- 6학년 8반 1분단
- 슬픔의 후에
- 천공의 시간
- 아이유
- index
- IT
- DBMS 구성요소
- db
- 봄 사랑 벚꽃 말고
- SQL 처리
- 기타
- 니가 참 좋아
- Inside Of Me
- nginx
- DBMS
- 개발자
- 데이터베이스
- 인덱스
- 레이디스코드
- 스위트라떼
- 오라클
취미로 음악을 하는 개발자
[ORACLE] 인덱스(INDEX) 본문
인덱스란
테이블에 존재하는 여러 데이터 행 중 원하는 데이터만 빠르게 찾을 수 있도록 테이블의 하나 이상의 열로 구성된 데이터베이스 오브젝트
Ex) 전화번호부, 찾아보기 등
인덱스 특징
- 하나 이상의 컬럼과 ROWID로 구성될 수 있다
- 구성된 열 순으로 자료가 정렬되어 있다
- 하나의 테이블에 하나 이상의 인덱스를 만들 수 있다
- 인덱스를 만들면 테이블과는 별도로 디스크에 저장된다
- 인덱스와 테이블을 ROWID를 사용하여 연결되어 있다
인덱스 스캔 절차
1) ROWID로 인덱스 컬럼 중 조건에 맞는 열 검색
2) 해당 테이블의 행 액세스
3) 테이블 중 원하는 열 조회
인덱스 생성 기준
: 인덱스를 너무 많이 생성하면 데이터 변경 작업 시 DBMS에 부하를 주게 됨으로 반드시 필요하고 자주 사용되는 형태의 인덱스를 구성해야 한다
- SQL문의 조회 조건으로 자주 나오는 열
- 가능한 수정이 빈번하지 않는 열
- 같은 값이 적은 열 (분포도가 10% 미만인 열)
- 분포도가 좋은 열을 단독적으로 생성하여 활용도 향상
- 자주 조합되어 사용되는 경우는 결합 인덱스 생성 (열의 순서 선정이 중요)
- 조인의 조건으로 자주 사용하는 열
인덱스 사용 시 고려사항
- 지나치게 많은 인덱스를 사용하거나 넓은 범위를 인덱스로 처리하면 오버헤드를 발생
- 옵티마이저를 위한 통계데이터를 주기적으로 갱신하여야 한다
- 아주 빈번이 사용하는 열은 모두 인덱스에 포함시킨다
인덱스 종류
Function Based 인덱스 |
인덱스 키 생성시 컬럼에 연산을 수행한 결과 값을 인덱스로 생성 SUM, AVG같은 Aggregate 함수로는 인덱스 생성 불가 LOB, REF 타입의 컬럼을 생성 불가 Ex) CREATE INDEX 인덱스명 ON 테이블명 (컬럼1 – 컬럼2); |
Bitmap 인덱스 |
어떤 값의 존재 여부를 1과 0으로만 표현하여 하나의 집합으로 구성하는 방식 적은 분포도의 값을 갖는 다량의 데이터를 빠른 속도로 검색 가능 Ex) CREATE BITMAP INDEX 인덱스명 ON 테이블명 (컬럼1, 컬럼2); |
Reverse-Key 인덱스 |
특정 블록에 대한 I/O의 집중을 피하기 위해 저장 시 데이터를 역으로 바꾸어 저장하고 조회 시 정상적으로 조회하는 인덱스 Ex) CREATE INDEX 인덱스명 ON 테이블명(컬럼1, 컬럼2) REVERSE; |
Descending 인덱스 |
인덱스 구성 시 컬럼의 값을 Descending으로 구성하는 인덱스 복합 인덱스로서, 두 개 이상의 컬럼에 대해 서로 다른 순서의 결과가 필요한 경우 사용됨 Ex) CREATE INDEX 인덱스명 ON 테이블명(컬럼1, 컬럼2 DESC); |
출처
'공대인 > DB' 카테고리의 다른 글
[ORACLE] 실행 계획에 의한 조인의 종류 (0) | 2021.05.17 |
---|---|
[ORACLE] SQL문 처리 과정 (0) | 2021.03.06 |
[ORACLE] DBMS 구성요소 (0) | 2021.02.28 |
DBMS란? (0) | 2021.02.28 |