[PostgreSQL 공부하기] INDEX의 종류

https://leopard.in.ua/2015/04/13/postgresql-indexes#.XfeTyugzZaR
Index는 추가적인 자료구조로서 아래의 목적들의 달성을 위해 도움이 된다:
1. 데이터 검색
2. Optimizer
3. JOIN
4. Relation: except/intersect를 위해 사용될 수 있다.
5. Aggregation: COUNT/MIN/MAX 등의 Aggregatation function들을 효율적으로 계산할 수 있게 해준다.
6. Grouping

Index Types: PostgreSQL에는 여러가지 Index타입들이 있으며 각각 다른 사용법을 가지고 있다.

B-Tree index: B-Tree는 CREATE INDEX를 하면 default로 생성되는 index이다. B-Tree의 B는 Balanced의 줄임말로서 트리의 양쪽이 거의 같은 양의 데이터를 가지도록 하는 것이 기본개념이다. B-Tree는 self-balancing 트리로서 sorted data를 유지하고, 검색, 순차적인 접근, 삽입, 삭제를 log시간안에 할 수 있는 자료구조이다. B-Tree는 큰 양의 데이터를 읽고 써야되는 경우에 용이하다.
https://en.wikipedia.org/wiki/B-tree

R-Tree index: R-Tree는 Rectangle-Tree의 줄임말이다. R-Tree는 주로 공간정보를 저장할 때 사용되는 트리다. 예를 들자면 지리좌표나, 다각형 좌표 등이다. R-Tree의 핵심 아이디어는 가까이 있는 객체들을 그들의 minimum bounding rectangle로 묶어 한단계 상위 계급인 트리로 표현하는 것이다. 모든 객체들은 이런 bounding rectangle에 포함되어 있고, 이 bounding rectangle과 intersect하지 않는 쿼리는 이 rectangle에 포함된 모든 객체들과도 intersect하지 않는다. leaf 레벨에서는 rectangle을 각각의 객체로 보고, 상위 레벨에서는 rectangle을 object들의 모음으로 본다.

https://en.wikipedia.org/wiki/R-tree
https://en.wikipedia.org/wiki/Minimum_bounding_rectangle

More:
Hash index
Bitmap index
GiST index
GIN index

댓글

이 블로그의 인기 게시물

[Django 공식문서 번역] REST Framework - Viewset and Router

Intel Open WebRTC Toolkit(OWT) Media server 설치하는법

[Django REST Framework] create() vs perform_create()