본문 바로가기

CS study/데이터베이스

가볍게 알아보는 인덱스와 성능에 대해(개선예정)

목차

     

    인덱스?

    DataBase 분야에서 Table에 대한 동작 속도를 높여주는 자료구조.

     

    마치 책갈피처럼, 인덱스를 설정하면 빠르게 색인을 할 수 있도록 도와준다.

     

    인덱스의 구조

    key, file, data에 맞추어 세개의 종류가 존재한다고 한다.

     

    1. Clustered Index

    마치 출을 세우듯 군집화된 인덱스를 이야기한다.

     

    대표적으로 PK 인덱스가 있다.

     

     

    2. NonClustered Index

    일반적인 인덱스를 지칭하며, 여러 개를 지정할 수 있다.

    하지만 클러스터와 달리 줄을 세우는 느낌은 아니다.

     

    실습(Clustered Index)

     

    다음과 같은 테이블이 있다고 가정해보자.

     

    alter table TBL_CODE add primary key(CODE)

    PK 테이블을 설정할 경우 CODE에 따라 자동 정렬된다.

    바로 정렬됨을 확인할 수 있다.

     

    클러스터드 인덱스의 특징인 줄세우기가 바로 나타남을 확인할 수 있다.

     

     

     

     

    실습(Nonclustered Index)

    마찬가지로 예시를 가져와 보았다.
    이번엔 논클러스터드 인덱스를 확인해보자.

     

     

     BTree 유형의 인덱스가 생성되며, 결과가 물리적으로 영향을 끼치지 않는다.

    실제 테이블을 건드리지 않고, 인덱스만을 위한 공간을 할당한 것이다.

     

     

    클러스터드 인덱스가 책갈피라면, 논클러스드는 책의 마지막 색인 페이지와 비슷하다.

     

    자료구조 : BTree

     

    B-Tree와 B+Tree의 예시도. (B-Tree를 통상적으로 많이 쓴다.)

     

    1. B-Tree

    자료구조는 루트(R)와 브랜치(B), 리프(L)로 나뉜다.

     

    B+Tree의 경우 링크드리스트를 활용한 리프 범위 계산이 가능하기에, Range 계산의 경우 더 이점이 있다고 한다.