데이터베이스 상에서 검색 속도를 향상시키기 위해 인덱스라는 것을 사용한다. 일상 생활에서 사용하는 인덱스와 마찬가지다. 데이터베이스의 인덱스는 크게 2가지 종류로 나눌 수 있다.
✅ Clustered Index(클러스터드 인덱스)
클러스터드 인덱스는 쉽게 말해 영한 사전이다. 영한사전은 단어가 알파벳 순서로 기재된다. 사용자는 찾고자하는 단어의 알파벳을 생각하고 그 순서에 따라 단어를 찾을 수 있다.
클러스터드 인덱스도 마찬가지로 실제 데이터가 키에 따라 정렬된 상태로 저장된다. 클러스터드 인덱스는 테이블당 하나만 존재한다. 대부분의 PRIMARY KEY는 클러스터드 인덱스로 사용된다.
✅ Non-Clustered Index(논클러스터드 인덱스)
논클러스터드 인덱스는 색인을 생각하면 쉽다. 어떤 책들은 책에서 나온 단어 등을 책 가장 뒷부분에 색인 처리하여 정리해둔다. 독자가 따로 찾아보고 싶은 단어나 문장이 있으면 색인에서 해당 문자를 찾아 그 옆에 기재된 페이지로 가면 원하는 단어, 문장에 대한 이야기가 실려있다.
논클러스터드 인덱스는 데이터 페이지를 따로 만들어 그 안에 데이터에 대한 키값을 넣어 그 키 값이 데이터를 가르키는 방식(포인터)으로 운영된다. 논클러스터드 인덱스는 여러 개 사용할 수 있다.
논클러스터드 인덱스는 테이블 안에 클러스터드 인덱스가 있느냐, 없느냐에 따라 다르게 작동한다.
1️⃣ Clustered Index가 없는 경우
데이터를 Heap Table에 저장한다. Heap RID ▶ Heap Table에 접근하여 데이터를 추출한다.
2️⃣ Clustered Index가 있는 경우
Heap Table이 없다. Leaf Table에 실제 데이터를 들고 있다.
'공부 > 데이터베이스' 카테고리의 다른 글
[데이터베이스] 정렬(Sort/Sorting) 줄이기 (0) | 2022.07.08 |
---|---|
[데이터베이스] JOIN(조인) : Nested Loop, Merge, Hash (0) | 2022.07.08 |
[데이터베이스] Transaction(트랜잭션)이란? (0) | 2022.07.07 |
[데이터베이스] 복합인덱스란? (0) | 2022.07.07 |
[데이터베이스] Microsoft SQL 쓰는 순서와 실행 순서 (0) | 2022.06.27 |