인프런 커뮤니티 질문&답변

Hj S님의 프로필 이미지
Hj S

작성한 질문수

CS 지식의 정석 | 디자인패턴 네트워크 운영체제 데이터베이스 자료구조

인덱스 #1. 인덱스의 구조와 효율적인 이유 ★★★

브랜치 노드와 리프노드의 개념이 해깔립니다.

해결된 질문

작성

·

24

0

첫번째 인덱스 강의에 브랜치 노드 부분을 생략하고 설명해주셨는데

이 브랜치 노드가 부분을 알고 싶습니다.

1부터 100까지 int타입의 값이 있는 property_id라는 column에 인덱스를 만들고

where property_id=30을 하면

30은 브랜치 노드에 있을 것 같은데

설명해주신 부분에서는 데이터 포인터는 리프 노드에만 있다고 하셔서 이부분이 머리속에서 해깔립니다.

 

답변 1

0

큰돌님의 프로필 이미지
큰돌
지식공유자

안녕하세요 ㅎㅎ

30은 브랜치노드가 아니라 리프노드에 있습니다.

브랜치 노드와 리프 노드의 개념을 조금 더 구체적으로 설명드릴게요 ㅎㅎ

 

데이터베이스의 인덱스 구조에서 브랜치 노드는 인덱스 트리의 구조를 이루는 중간 노드로, 실제 데이터가 저장된 위치를 직접적으로 참조하지 않고 다음 노드나 리프 노드로 가는 경로를 나타내는 역할을 합니다. 반면, 리프 노드는 실제 데이터를 가리키는 포인터를 가지고 있어 해당 데이터가 저장된 위치로 바로 접근할 수 있습니다.

예를 들어, 1부터 100까지 property_id 값을 가지는 칼럼에 대해 인덱스를 생성하고, WHERE property_id = 30이라는 조건을 검색한다고 가정할 때:

브랜치노드를 거치면서 리프노드로 가게 됩니다.

이 때 브랜치노드는 필요한 데이터가 있는 리프노드까지 갈 때 한번에 리프노드로 가면 비용이 많이 드는데 브랜치노드를 통해 적절히 리프노드가 있을만한 범위로 가게 되여 이 때의 비용을 줄여주게 되는 역할을 담당하게 됩니다.

그리고 리프 노드에 도달하면, property_id = 30이라는 특정 값을 가리키는 데이터 포인터를 찾게 됩니다. 이 데이터 포인터가 실제 데이터의 위치를 나타내며, 이를 통해 해당 데이터를 가져올 수 있습니다.



또 질문 있으시면 언제든지 질문 부탁드립니다.

좋은 수강평과 별점 5점은 제게 큰 힘이 됩니다. :)

감사합니다.

강사 큰돌 올림.

Hj S님의 프로필 이미지
Hj S

작성한 질문수

질문하기