PostgreSQL몇 가지를 제공합니다 인덱스 토토 : B-Tree, Hash, Gist, SP-Gist 및 Gin. 각 인덱스 토토 다른 토토에 가장 적합한 다른 알고리즘을 사용합니다. 쿼리의. 기본적으로색인 생성명령은 가장 일반적인 B-Tree 토토를 만듭니다 상황.
B- 트리는 할 수있는 데이터의 평등과 범위 쿼리를 처리 할 수 있습니다. 주문으로 정리하십시오. 특히PostgreSQL쿼리 플래너는 사용을 고려합니다 토토 된 열이 이 연산자 중 하나를 사용한 비교 :
< |
<= |
= |
= |
Optimizer는 쿼리에 B- 트리 색인을 사용할 수도 있습니다. 패턴 일치 연산자 포함좋아요and~ if패턴은 일정하며입니다 문자열의 시작 부분에 고정 - 예를 들어COL Like 'foo%'또는col ~ '^foo'하지만col like '%bar'. 그러나 데이터베이스가 C 로케일을 사용하지 않으면 필요합니다. 지원하기 위해 특수 운영자 클래스로 인덱스를 작성하려면 패턴 매칭 쿼리의 인덱싱; 보다섹션 11.9아래. 그것은 또한 b-tree indexes를 사용할 수 있습니다ilike및~*그러나 패턴이 시작된 경우에만 비 alphabetic 캐릭터, 즉 그렇지 않은 문자로 상단/소문자 변환의 영향을받습니다.
B- 트리 토토는 정렬 된 데이터를 검색하는 데 사용될 수 있습니다. 주문하다. 이것은 간단한 스캔 및 정렬보다 항상 빠르지는 않지만 종종 도움이됩니다.
해시 토토는 간단한 평등 비교 만 처리 할 수 있습니다. 그만큼 쿼리 플래너는 토토 된 열은를 사용하여 비교에 관여합니다.=운영자. 다음 명령이 사용됩니다 해시 색인 생성 :
색인 생성이름13124_13130테이블해시 사용 (열);
주의 |
해시 인덱스 작업은 현재 월경되지 않았습니다 해시 인덱스는로 재건되어야 할 수도 있습니다.Reindex데이터베이스 충돌 후 기록되지 않은 변화였습니다. 또한 해시 인덱스의 변경 사항이 있습니다 스트리밍 또는 파일 기반 복제를 통해 복제되지 않습니다 초기 기본 백업 후에는 답변을 제공합니다. 이후에 사용하는 쿼리. 이러한 이유로 해시 인덱스 사용은 현재 낙담합니다. |
GIST 토토는 단일 종류의 색인이 아니라 오히려 많은 인덱싱 전략이있는 인프라 구현할 수 있습니다. 따라서 특정 운영자와 함께 인덱싱에 따라 다수는 요지 토토가 다릅니다. 전략 (운영자 클래스). 로서 예,의 표준 분포PostgreSQLGIST 운영자 클래스 포함 지원하는 여러 2 차원 기하학적 데이터 유형의 경우 이 연산자를 사용하여 인덱스 된 쿼리 :
<< |
&< |
& |
<< | |
& <| |
| & |
| |
@ |
<@ |
~ = |
&& |
GIST 토토도 최적화 할 수 있습니다"가장 가까운 곳"예 :
선택 * 위치별로 주문에서 <- 포인트 '(101,456)'제한 10;
주어진 목표 지점에 가장 가까운 10 개의 장소를 찾습니다. 이를 수행하는 능력은 다시 특정에 달려 있습니다. 운영자 클래스 사용.
GIST 인덱스와 같은 SP-Gist 인덱스는 인프라를 제공합니다 다양한 종류의 검색을 지원합니다. SP-Gist 허가 균형 잡힌 다양한 비 균형 잡힌 구현 쿼드 트리, K-D 트리 및와 같은 디스크 기반 데이터 구조 접미사 나무 (트리). 예를 들어,의 표준 분포PostgreSQLSP-Gist 포함 지원하는 2 차원 지점에 대한 운영자 클래스 이 연산자를 사용하여 인덱스 된 쿼리 :
<< |
~ = |
<@ |
<^ |
^ |
진 인덱스는 반전 인덱스입니다. 예를 들어 하나 이상의 키를 포함합니다. 요점과 SP-Gist, Gin은 다양한 사용자 정의 인덱싱을 지원할 수 있습니다 전략 및 진 색인이있는 특정 운영자 인덱싱 전략에 따라 사용할 수 있습니다. 로서 예,의 표준 분포PostgreSQL진 운영자 클래스를 포함합니다 1 차원 배열은 이들을 사용하여 인덱스 된 쿼리를 지원합니다 운영자 :
<@ |
@ |
= |
&& |