본문 바로가기
DB/SQL_Example

인덱스 관리(By Oracle)

by Mr.DonyStark 2024. 1. 23.

□ 인덱스
  ○ 인덱스는 SQL 명령문의 처리 속도를 향상시키기 위해 칼럼에 대해 생성하는 객체
  ○ 인덱스는 포인트를 이용하여 테이블에 저장된 데이터를 랜덤 액세스하기 위한 목적으로 사용

□ 인덱스의 종류
  ○ 고유 인덱스
  ○ 비고유 인덱스
  ○ 단일 인덱스
  ○ 결합 인덱스
  ○ DESCENDING INDEX
  ○ 함수기반 인덱스

 

□ 인덱스 구조

 

□ 인덱스가 효율적인 경우
  ○ WHERE 절이나 조인 조건절에서 자주 사용되는 칼럼
  ○ 전체 데이터중에서 10~15% 이내의 데이터를 검색하는 경우
  ○ 두개 이상의 칼럼이칼럼이WHERE절이나 조인 조건에서 자주 사용되는 경우
  ○ 테이블에 저장된 데이터의 변경이 드문 경우
  ○ 열에 널 값이 많이 포함된 경우경우, 열에 광범위한 값이 포함된경우

 

□ 고유 인덱스 : 유일한 값을 가지는 칼럼에 대해 생성하는 인덱스로 모든 인덱스 키는 테이블의 하나의 행과 연결

--고유인덱스 등록
create UNIQUE INDEX idx_dept_name
on department(dname);

--고유인덱스 삭제
drop index idx_dept_name;

 

□ 비고유 인덱스인덱스 : 비고유 인덱스는 중복된 값을 가지는 칼럼에 대해 생성하는 인덱스로 하나의 인덱스 키는 테이블의 여러 행과 연결될 수 있음

create index idx_stud_birthdate
on student(birthdate);

 

□ 단일/결합 인덱스

  ○ 단일 인덱스 : 하나의 칼럼으로만 구성된 인덱스
  ○ 결합 인덱스 : 두 개 이상의 칼럼을 결합하여 생성하는 인덱스

create index idx_stud_dno_grade
on student(deptno, grade);

 

□ Descending Index : DESCENDING INDEX는 칼럼별로 정렬 순서를 별도로 지정하여 결합 인덱스를 생성

create index fidx_stud_no_name on student(deptno desc, name ASC);

 

함수기반 인덱스

  ○ 함수 기반 인덱스는 오라클 88i 버전부터 지원하는 새로운 형태의 인덱스로 칼럼에 대한 연산이나 함수의 계산 결과를 인덱스로 생성 가능
  ○ UPPER(column_name)또는또는LOWER(column_name)키워드로 정의된 함수 기반 인덱스를 사용하면 대소문자 구분 없이 검색할 수 있음
  ○ 함수기반 인덱스는인덱스는INSERT, UPDATE시에는 새로운 값을 인덱스에 추가

--ex1
create INDEX uppercase_idx ON emp (UPPER(ename));
--ex2
create index idx_standard_weight ON student((height-100)*0.9);

 

□ 인덱스 실행 경로확인

  ○ cmd 창 > ----> sqlplus "/as sysdba" 입력 후 접속

  ○ 코드입력(SQL DEVELOPER상에서는 쿼리문실행 후 F10 을 눌러 실행계획 조회가 가능함)

--계정 연결접속
conn ID/PW
--모든sql 명령문에 대해 실행 경로를 출력하기 위한 환경 설정
set autotrace on
--쿼리문 입력 > 입력 후 경로출력되는 것을 확인할 수 있음
select*from emp

 

 

□ 인덱스 삭제

drop index index;

 

□ 인덱스 재구성

LTERINDEX stud_no_pk REBUILD;

 

'DB > SQL_Example' 카테고리의 다른 글

데이터 무결성(By Oracle)  (0) 2024.01.22
테이블 관리(By Oracle)  (0) 2024.01.22
DML(Data Manpulation Language)  (0) 2024.01.22
서브쿼리 (By Oracle)  (0) 2024.01.22
조인함수 (By Oracle)  (0) 2024.01.22