▶ INDEX
- 데이터를 빠르게 검색하기 위한 구조, 데이터의 정렬과 탐색같은 DBMS의 성능향상을 목적으로 사용한다.
■ 인덱스의 특징
- 인덱스로 설정한 컬럼의 데이터들을 별도로 "오름차순으로 정렬"하여 특정 메모리 공간에 물리적인 주소(ROWID) 실제 컬럼의 값을 함께 저장시킨다.
- 인덱스를 만들었다고 해서 조건절에 인덱스를 활용한 컬럼을 제시했을 때 바로 사용하지는 않는다.
- 인덱스를 활용하여 조회할지 안할지는 옵티마이저가 판단한다.
● 현재 계정에 생성된 인덱스들 확인
SELECT * FROM USER_INDEXES; -- PK설정시 자동으로 인덱스 생성됨.
● 현재 계정에 생성된 인덱스와 + 인덱스가 적용된 컬럼을 확인
SELECT * FROM USER_IND_COLUMNS;
■ 인덱스의 장점
- WHERE 절에 인덱스 컬럼을 사용 시 훨씬 빠르게 연산이 가능하다.
- ORDER BY 연산을 사용할 필요가 없다.(이미 정렬되어 있다.)
- MIN, MAX값을 찾을 때 연산속도가 매우 빠르다.(이미 정렬되어 있기 때문이다.)
■ 인덱스의 단점
- DML에 취약하다.(INSERT, UPDATE, DELETE 등 데이터가 새롭게 추가/삭제되면 인덱스테이블안에 있는 값들을 다시 정렬하고 물리적 주소를 수정해줘야 한다.
- INDEX를 이용한 INDEX-SCAN보다 단순한 FULL-SCAN이 더 효율적일 때가 있다.
- 인덱스가 많으면 많을수록 저장공간을 잡아먹는다.
'DB' 카테고리의 다른 글
DB (15) OBJECT(PROCEDURE, FUNCTION) (0) | 2023.06.15 |
---|---|
DB (14) PL/SQL (0) | 2023.06.14 |
DB (12) OBJECT(SEQUENCE) (2) | 2023.06.13 |
DB (11) OBJECT (0) | 2023.06.13 |
DB (10) TCL(COMMIT, ROLLBACK, SAVEPOINT) (0) | 2023.06.13 |