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
'개발 > 백엔드' 카테고리의 다른 글
[PostgreSQL 공부하기] PostgreSQL Index는 B-Tree를 어떻게 사용할까? (1) | 2019.12.23 |
---|---|
[PostgreSQL 공부하기] Index는 어떤 column에 생성해야될까? (0) | 2019.12.17 |
[ElasticSearch 정리하기] Full Text Search 종류 (0) | 2019.12.13 |
[Nodejs 내부 원리] Chapter1 정리 - Reactor Pattern (0) | 2019.12.06 |
[ElasticSearch 공부하기] Mapping (0) | 2019.11.14 |