SQL

INDEX와 TABLE

행복하게사는게꿈 2020. 2. 11. 12:28

정의

 - 정렬해놓고 색인마냥 찾아가는 개념

 

 - 테이블의 일부  컬럼을 기준으로 데이터를 정렬한 객체

 

 - 테이블의 ROW를 가리키는 주소를 가지고 있다. (ROWID)

 

  * ROWID는 테이블의 주소

 주소를 알면 바로 접근가능

 - 정렬된 인덱스의 기준으로 해당 ROW의 위치를 빠르게 검색하여 원하는 테이블의 원하는 행에 빠르게 접근

 

 - 테이블에 데이터를 입력하면 인덱스 구조도 갱신된다.

 

TABLE

 - 입력 순서대로 데이터 저장 : 비 순차적인 블록

     * DELETE 등을 사용하면서 비 연속적인 블록 구성

 

 - 대용량 테이블 엑세스 시 과도한 블록 읽기 발생

 

테이블 조회 방법

1. FULL TABLE SCAN

 -> 인덱스 없이 SELECT 절로 조회

 -> 즉, 테이블 다 읽고 WHERE에 걸리는거 버리고 - > 읽고서 버림

    필터로 EMPNO = 7782걸로 거름

2. INDEX SCAN

  -> 인덱스 있이 조회

  -> 필요한 것만 읽음

   * access("EMPNO=7782")로 바로 엑세스 (필터 X)

 

   --> 해당 인덱스를 찾아서 인덱스 주소로 접근하는 방식 ( 불필요 데이터 읽지 X)

 

 ** 인덱스가 없는 컬럼을 대상으로 조회하면 별 효용 없음

 

3. FAST FULL INDEX SCAN

 

 

SELECT 조회 컬럼이 테이블 접근에 미치는 영향

 

UNIQUE VS NON-UNIQUE 인덱스 

* RANGE SCAN으로 실행됌

 --> NON-UNIQUE 인덱스기 때문에 같은 값이 또 등장할 수 있어서 다음값까지 읽어보고 조회 함

 

인덱스 추가 설명

 

인덱스 추가 실습

 

1. 한개의 컬럼에 인덱스 있을 때

 

2. 두개의 컬럼에 인덱스가 있을 때

job, ename 컬럼에 인덱스 생성

3. 문자열 검색시 '%문자' 형태인 경우