고래씌
[Oracle] 13. Object(INDEX) - INDEX 본문
1. INDEX
: 데이터를 빠르게 검색하기 위한 구조로 데이터의 정렬과 탐색과 같은 DBMS성능향상을 목적으로 사용
- 책에서 '목차'같은 역할을 하는 DBMS 객체
- 테이블에서 데이터를 조회(SELECT)할 때 인덱스가 없다면 테이블의 모든 데이터를 하나하나 뒤져서(FULL_SCAN) 내가 원하는 데이터를 검색한다
- 인덱스 설정을 해두면 테이블의 모든 행을 뒤지지 않고 내가 원하는 조건만 빠르게 검색이 가능하다.
- 인덱스로 설정한 칼럼의 데이터들을 별도로 "오름차순으로 정렬"하여 특정메모리 공간에 물리적 주소값과, 실제 칼럼의 값을 함께 저장시킨다.
▶ 현재 계정에 생성된 인덱스들
SELECT * FROM USER_INDEXES; |
SELECT * FROM USER_IND_COLUMNS; |
▶ ① 일반 칼럼 인덱스 생성
CREATE INDEX IND_EMPLOYEE ON EMPLOYEE(EMP_NAME); |
② 인덱스 추가후 인덱스 사용여부 확인 F10
☞ 인덱스 사용중임을 알수 있음
▶ 여러칼럼에 인덱스 부여 가능
CREATE INDEX IND_EMPLOYEE_COM ON EMPLOYEE(EMP_NAME, DEPT_CODE); |
1) 인덱스의 장점
☞ WHERE절에 인덱스 칼럼을 사용시 훨씬 빠르게 연산 가능하다.
☞ ORDER BY 연산을 사용할 필요가 없다.(이미 정렬되어 있다.)
☞ MIN, MAX 값을 찾을 떄 연산속도가 매우 빠름(이미 정렬되어있기 때문에)
2) 인덱스의 단점
☞ 인덱스가 많을수록 저장공간을 잡아먹는다. 인덱스를 만들면 만들수록 저장공간이 부족해지게되므로 적절한 수준을 유지해야한다.
☞ INDEX를 활용한 INDEX-SCAN보다 단순한 FULL-SCAN이 더 유리할때가 있다. 일반적으로 테이블의 전체데이터중 10~15%의 데이터를 처리하는 경우에만 효율적이다.
☞ DML에 취약하다(INSERT, UPDATE, DELETE). INSERT, UPDATE, DELETE 등 데이터가 새롭게 추가 수정 삭제되면, 인덱스테이블 안에 있는 값들을 다시 정렬하고, 물리적 주소값을 수정해줘야 한다.
'Database > Oracle' 카테고리의 다른 글
[Oralce] 15. Object(Procedure) - 프로시저 (0) | 2023.12.01 |
---|---|
[Oracle] 14. PL/SQL (0) | 2023.12.01 |
[Oracle] 12. Object(SEQUENCE) - 시퀀스 (0) | 2023.11.30 |
[Oralce] DDL 실습문제 (0) | 2023.11.30 |
[Oracle] 11. Object(VIEW) (0) | 2023.11.30 |