실제 데이터와 같은 무리의 인덱스
실제 데이터와 다른 무리의 별도의 인덱스
아래와 같은 주문테이블이 있을때,
| OrderID (PK) | CustomerID | OrderDate | TotalAmount |
|---|---|---|---|
| 1 | 1001 | 2023-01-14 | 500 |
| 2 | 1002 | 2023-01-15 | 7650 |
| 3 | 1001 | 2023-01-14 | 2000 |
OrderID를 기준으로 클러스터드 인덱스를 생성하면, 데이터를 물리적으로 정렬하기 때문에 테이블의 레코드와 인덱스의 레코드가 같은 무리를 형성.
| OrderID (PK) | CustomerID | OrderDate | TotalAmount |
|---|---|---|---|
| 1 | 1001 | 2023-01-14 | 500 |
| 2 | 1002 | 2023-01-15 | 7650 |
| 3 | 1001 | 2023-01-14 | 2000 |
이제 CustomerID를 기준으로 비클러스터드 인덱스를 생성하면 테이블의 레코드와 인덱스의 레코드가 다른 무리를 형성.
Before
| OrderID (PK) | CustomerID | OrderDate | TotalAmount |
|---|---|---|---|
| 1 | 1001 | 2023-01-14 | 500 |
| 2 | 1002 | 2023-01-15 | 7650 |
| 3 | 1001 | 2023-01-14 | 2000 |
After
비클러스터드 인덱스를 생성하면 인덱스는 CustomerID를 기준으로 정렬된다. 이 때문에 인덱스와 원본 데이터는 다른 무리를 형성하게 된다. ( 원본과 다름!! )
| CustomerID | OrderID | OrderDate | TotalAmount |
|---|---|---|---|
| 1001 | 1 | 2023-01-14 | 500 |
| 1001 | 3 | 2023-01-14 | 2000 |
| 1002 | 2 | 2023-01-15 | 7650 |
클러스터 인덱스는 데이터 위치를 바로 알기때문에 그 데이터로 바로 접근할 수 있고, 논클러스터 인덱스는 인덱스 페이지를 한번 거쳐서 데이터에 접근하는 방식이다.