반응형
250x250
Notice
Recent Posts
Recent Comments
Link
관리 메뉴

Yeonee's Story

Oracle SQL - OBJECT(INDEX), 인덱스의 특징 및 장점과 단점 본문

Oracle SQL/Oracle SQL

Oracle SQL - OBJECT(INDEX), 인덱스의 특징 및 장점과 단점

yeonee 여니 2023. 6. 14. 13:49
728x90
반응형
SMALL

안녕하세요.
https://blog.naver.com/sysysy0302 여니입니다 :)

/*
    <INDEX>
    데이터를 빠르게 검색하기 위한 구조 데이터의 정렬과 탐색같은 DBMS의 성능향상을 목적으로 사용한다.
    
    인덱스의 특징
    
    인덱스로 설정한 칼럼의 데이터들을 별도로 "오름차순으로 정렬"하여
    특정 메모리 공간에 물리적인주소(ROWID) 실제 칼럼의 값을 함께 저장시킴
*/
-- 현재 계정에 생성된 인덱스들 확인
SELECT * FROM USER_INDEXES; -- PK설정시 자동으로 인덱스 생성됨.
-- 현재 계정에 생성된 인덱스와 + 인덱스가 적용된 칼럼을 확인
SELECT * FROM USER_IND_COLUMNS;

-- 실행계획 확인.
SELECT * 
FROM EMPLOYEE
JOIN DEPARTMENT ON DEPT_CODE = DEPT_ID
WHERE EMP_NAME = '송종기';
-- 일반 칼럼 인덱스
CREATE INDEX IND_EMPLOYEE_EMP_NAME ON EMPLOYEE(EMP_NAME);

-- 실행계획 확인
-- 우리가 인덱스를 만들었다고 해서 조건절에 인덱스를 활용한 칼럼을 제시했을때 바로 사용하지는 않는다.
-- 인덱스를 활용하여 조회 할지 안할지 옵티마이저가 판단한다.
SELECT * 
FROM EMPLOYEE
JOIN DEPARTMENT ON DEPT_CODE = DEPT_ID
WHERE EMP_NAME = '송종기';

SELECT EMP_ID
FROM EMPLOYEE
WHERE DEPT_CODE = 'D5';
CREATE INDEX IND_EMPLOYEE_DEPT_CODE ON EMPLOYEE(DEPT_CODE);

DROP INDEX IND_EMPLOYEE_EMP_NAME;

/*
    인덱스의 장점
    1) WHERE절에 인덱스 칼럼을 사용시 훨씬 빠르게 연산이 가능하다.
    2) ORDER BY 연산을 사용할 필요가 없다.(이미 정렬되어있다.)
       ORDER BY절은 메모리를 많이 잡아먹는 작업임
    3) MIN, MAX 값을 찾을 때 연산속도가 매우 빠름(정렬되어있으니까)
    
    인덱스의 단점
    1) DML에 취약함
    INSERT, UPDATE, DELETE 등 데이터가 새롭게 추가 삭제되면 인덱스테이블안에 있는 값들을 다시 정렬하고, 물리적 주소를
    수정해줘야함.
    2) INDEX를 이용한 INDEX-SCAN보다 단순한 FULL-SCAN이 더 효율적일때가 있음
       일반적으로 테이블의 전체데이터중 10~15% 정도의 데이터를 처리하는 경우에만 인덱스가 효율적이다.
    3) 인덱스가 많을수록 저장공간을 잡아먹음, 인덱스가 많으면 많을수록 저장공간이 부족해지게 되므로, 적절한 수준을
    유지해줘야한다.
    
*/

 

+ 인덱스 공부시 참고하여 보았던 포스팅입니다.

Oracle 인덱스(Index)와 B트리 인덱스(트리 기반 인덱스) (tistory.com)
728x90
반응형
LIST