□ 인덱스
○ 인덱스는 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 |