Download presentation
Presentation is loading. Please wait.
Published byIvan Gunardi Modified 5년 전
1
13 인덱스 인덱스의 개념 인덱스의 구조 인덱스의 효율적인 사용 방법 인덱스의 종류 및 생성 방법 인덱스 실행 경로 확인
13 인덱스 인덱스의 개념 인덱스의 구조 인덱스의 효율적인 사용 방법 인덱스의 종류 및 생성 방법 인덱스 실행 경로 확인 인덱스 관리
2
인덱스의 개념 인덱스란? 인덱스의 종류 인덱스는 SQL 명령문의 처리 속도를 향상시키기 위해 칼럼에 대해 생성하는 객체
인덱스는 포인트를 이용하여 테이블에 저장된 데이터를 랜덤 액세스하기 위한 목적으로 사용 인덱스의 종류 고유 인덱스 비고유 인덱스 단일 인덱스 결합 인덱스 DESCENDING INDEX 함수 기반 인덱스 13장. 인덱스
3
인덱스의 구조 인덱스의 내부 구조는 B*-트리 형식으로 구성 …… … Root Node Internal Node
전인하 이동훈 Internal Node 오유석 박동진 류민정 김진경 Leaf Node 김영균 김진영 박미경 이광훈 윤진욱 임유진 …… … ROWID .0001 .0004 000000A FILE# LINE# BLOCK# NAME .0005 .0003 13장. 인덱스
4
인덱스의 효율적인 사용 방법 인덱스가 효율적인 경우 인덱스 생성 WHERE 절이나 조인 조건절에서 자주 사용되는 칼럼
전체 데이터중에서 10~15%이내의 데이터를 검색하는 경우 두 개 이상의 칼럼이 WHERE절이나 조인 조건에서 자주 사용되는 경우 테이블에 저장된 데이터의 변경이 드문 경우 인덱스 생성 13장. 인덱스
5
고유 인덱스 고유 인덱스는 유일한 값을 가지는 칼럼에 대해 생성하는 인덱스로 모든 인덱스 키는 테이블의 하나의 행과 연결
ROWID .0001 000000A 컴퓨터공학과 .0005 정보미디어학부 .0003 전자공학과 .0006 메카트로닉스학부 .0002 멀티미디어학과 .0007 공과대학 .0004 기계공학과 FILE# LINE# BLOCK# DNAME 10 100 4호관 3호관 2호관 1호관 LOC 200 202 201 102 101 COL DEPTNO 부서 (DNAME) 인덱스 부서 테이블 부서 테이블의 DNAME 칼럼 인덱스 생성 SELECT deptno, name FROM department WHERE dname in (‘멀티미디어학과’, ’정보미디어학부’); 인덱스를 활용한 SQL 13장. 인덱스
6
고유 인덱스 생성 예 13장. 인덱스
7
학생 테이블의 BIRTHDATE 칼럼 인덱스 생성
비고유 인덱스 비고유 인덱스는 중복된 값을 가지는 칼럼에 대해 생성하는 인덱스로 하나의 인덱스 키는 테이블의 여러 행과 연결될 수 있다. ROWID .0001 .0005 000000A 85/11/24 …… .0009 84/12/18 .0016 81/10/13 .0013 .0012 79/04/02 .0008 79/10/12 FILE# LINE# BLOCK# BIRTHDATE … 윤진욱 10204 이광훈 10107 84/09/16 83/02/28 81/01/11 84/05/16 83/12/10 김진경 20103 조명훈 20104 ……… 류민정 10108 김영균 10103 박미경 10102 이동훈 20101 전인하 10101 NAME STUDNO 학생 (BIRTHDATE) 인덱스 학생 테이블 학생 테이블의 BIRTHDATE 칼럼 인덱스 생성 SELECT name, birthdate FROM student WHERE birthdate in (’79/04/02’, ’81/10/13’); 인덱스를 활용한 SQL 13장. 인덱스
8
비고유 인덱스 생성 예 13장. 인덱스
9
학생 테이블의 DEPTNO, GRADE 칼럼으로
단일 인덱스, 결합 인덱스 단일 인덱스 단일 인덱스는 하나의 칼럼으로만 구성된 인덱스이다. 결합 인덱스 결합 인덱스는 두 개 이상의 칼럼을 결합하여 생성하는 인덱스이다. ROWID … 201 101 DEPTNO .0001 .0005 000000A 1 …… .0002 .0013 4 .0007 2 .0011 .0003 FILE# LINE# BLOCK# GRADE 박동진 20102 3 이광훈 10107 김진경 20103 조명훈 20104 ……… 류민정 10108 김영균 10103 박미경 10102 이동훈 20101 전인하 10101 NAME STUDNO 학생 (DEPTNO, GRADE) 인덱스 학생 테이블 학생 테이블의 DEPTNO, GRADE 칼럼으로 결합 인덱스 생성 SELECT studno, name FROM student WHERE deptno = 101 AND grade = 4; 인덱스를 활용한 SQL 13장. 인덱스
10
결합 인덱스 생성 예 13장. 인덱스
11
DESCENDING INDEX DESCENDING INDEX
13장. 인덱스
12
함수 기반 인덱스 함수 기반 인덱스 함수 기반 인덱스는 오라클 8i 버전부터 지원하는 새로운 형태의 인덱스로 칼럼에 대한 연산이나 함수의 계산 결과를 인덱스로 생성 가능 함수 기반 인덱스는 INSERT, UPDATE시에는 새로운 값을 인덱스에 추가 13장. 인덱스
13
인덱스 실행 경로 확인 실행 경로 SQL 명령문 실행시 SQL 명령문이 내부적으로 처리되는 경로
검색 결과만 출력하므로 실행 경로가 인덱스를 이용하여 랜덤 액세스를 했는지 아니면 전체 테이블을 검색을 했는지 프로그래머가 확인하기 어려움 13장. 인덱스
14
인덱스 실행 경로 확인 1 13장. 인덱스
15
인덱스 실행 경로 확인 2 13장. 인덱스
16
인덱스 실행 경로 확인 3 13장. 인덱스
17
인덱스 실행 경로 확인 4 13장. 인덱스
18
인덱스 정보 조회 USER_INDEXES 인덱스 이름과 유일성 여부 등을 확인 13장. 인덱스
19
인덱스 정보 조회 USER_IND_COLUMNS 인덱스 이름, 인덱스가 생성된 테이블 이름과 칼럼 이름 등을 확인
13장. 인덱스
20
인덱스 삭제 인덱스 삭제 DROP INDEX문 사용 13장. 인덱스
21
인덱스 재구성 인덱스 재구성 인덱스 재구성은 인덱스를 정의한 테이블의 칼럽 값에 대해 변경 작업이 자주 발생하여, 불필요하게 생성된 인덱스 내부 노드를 정리하는 작업 13장. 인덱스
Similar presentations