Database초보우낙
4. 같은 컬럼에 여러개의 인덱스를 생성할 수 있다(12c) 본문
데이터 베이스 저장구조에 대해 설명

인덱스의 종류가 뭐가 있나요?
1. b-tree 인덱스 : tree구조로 구성된 기본 인덱스
2. bitmap 인덱스 : 0과 1인 bitmap으로 leaf 블럭이 구성된 인덱스
3. reverse key 인덱스 : btree 인덱스를 사용했을 때 어느 하나의 인덱스 블럭에 i/o 가 집중되어서 인덱스 검색 성능이 떨어질때 유용한 인덱스
4. function base 인덱스 : where 절의 계산식 또는 함수가 포함된 컬럼 자체에 거는 인덱스

■ 실습 (scott 에서 실습)
#1. 사원 테이블에 이름에 인덱스를 생성하시오 !
create index emp_ename on emp(ename);
#2. 사원 테이블의 이름에 인덱스를 전체 스캔하시오 !
# ename이 공백보다 클 경우 출력
select ename
from emp
where ename > ' ';

-> A~Z순서내로 정렬되어 출력된다
#3. 사원 테이블에 이름에 인덱스를 삭제하시오 !
drop index emp_ename;
#4. 사원 테이블에 이름에 reverse 인덱스를 생성하시오!
create index emp_ename_reverse
on emp(ename) reverse;
-> ename을 인덱스 블럭에 저장할 때 btree와 다르게 ABCD순서대로 저장하지 않습니다.
이름의 끝철자를 기준으로 ABCD순으로 정렬합니다
#5. 사원 테이블에 이름에 걸인 reverse key 인덱스를 전체 스캔하시오!
# ename이 공백보다 클 경우 출력
select ename
from emp
where ename > ' ';

-> 이름의 끝 철자를 기준으로 ABCD 순으로 저장되어있다
그래서 이름이 A로 시작하는 사원들을 검색하는 유저들이 많아서 특정 인덱스 블럭에 I/O가 집중되서 성능이 떨어질 우려가 있을때 Reverse Key 인덱스로 생성하면 I/O가 분산된다.
※12C는 단일 컬럼에 대해서 여러개의 인덱스를 동시에 생성할 수 있습니다.
11g는 이게 안됐다. 컬럼한개에 인덱스 한개만 생성할 수 있었다.
■ 실습 :
#1. 사원테이블에 이름에 인덱스를 DROP
<인덱스 조회>
select index name
from user_indexes
where table_name='EMP';
<인덱스 삭제>
drop index emp_ename_reverse;

#2. 사원테이블에 이름에 B-tree 인덱스를 생성
create index emp_ename on emp(ename);
#3. 사원 테이블에 이름에 bitmap인덱스를 생성
bitmap 인덱스는 중복된 데이터가 많을 때 검색속도가 빠르다
create bitmap index emp_bit_ename on emp(ename);
------미완성-----추가보충예정
'oracle 12c' 카테고리의 다른 글
6. 컬럼값 자동증가 기능(12c 뉴피처) (0) | 2024.04.26 |
---|---|
5. 페이징 처리가능 (12c 뉴피처) (1) | 2024.04.26 |
3. 12c 버젼 이후부터 반드시 챙겨야하는 SQL튜닝 관련 파라미터 (1) | 2024.04.26 |
2.(새로운 오라클 기능 1) 보이지않는 컬럼 (0) | 2024.04.26 |
1. 21c db환경설정 (0) | 2024.04.26 |