이 문서는 지원되지 않는 버전의 PostgreSQL을위한 것입니다.
당신은에 대해 같은 페이지를 보려고 할 수 있습니다PostgreSQL : 문서 : 17 : F.19. intarray - 스포츠 토토 베트맨의 배열 조작버전 또는 위에 나열된 다른 지원 버전 중 하나입니다.

F.18. intarray

theintarray모듈은 숫자를 제공합니다 널리없는 배열 조작을위한 유용한 기능 및 연산자 정수의. 일부를 사용하여 인덱스 검색을 지원합니다 운영자의.

제공된 토토이 있으면 이러한 모든 작업에 오류가 발생합니다. 널 요소가 포함되어 있습니다.

이러한 작업 중 다수는 1 차원에만 합리적입니다 토토. 더 많은 치수의 입력 토토을 수락하지만 데이터는 스토리지의 선형 토토 인 것처럼 취급됩니다. 주문하다.

F.18.1.intarray기능 및 연산자

intarray모듈이 표시됩니다표 F-10, 연산자 안에표 F-11.

테이블 F-10.intarray기능

function 반환 유형 설명 example 결과
iCount (int []) int 토토의 요소 수 iCount ( '1,2,3':: int []) 3
sort (int [], text dir) int [] 정렬 토토 -dirASC또는desc sort ( '1,2,3':: int [], 'desc') 3,2,1
sort (int []) int [] 오름차순 순서로 정렬 sort (토토 [11,77,44]) 11,44,77
sort_asc (int []) int [] 오름차순 순서로 정렬
Sort_desc (int []) int [] 내림차순으로 정렬
uniq (int []) int [] 인접한 복제 제거 uniq (sort ( '1,2,3,2,1':: int []) 1,2,3
idx (int [], int item) int 첫 번째 요소 일치의 색인항목(0이면 0) idx (토토 [11,22,33,22,11], 22) 2
subarray (int [], int start, int 렌) int [] 위치에서 시작하는 토토 부분시작, Len요소 서브 어레이 ( '1,2,3,2,1':: int [], 2, 3) 2,3,2
서브 어레이 (int [], int start) int [] 위치에서 시작하는 토토 부분시작 서브 어레이 ( '1,2,3,2,1':: int [], 2) 2,3,2,1
intset (int) int [] 단일 요소 배열 만들기 intset (42) 42

표 F-11.intarray운영자

운영자 반환 설명
int [] && int [] 부울 오버랩 -true배열이 적어도 존재하는 경우 하나의 일반적인 요소
int [] @ int [] 부울 포함 -true왼쪽 토토에 포함 된 경우 오른쪽 토토
int [] <@ int [] 부울 포함 -true왼쪽 토토 인 경우 오른쪽 토토에 포함
# int [] int 토토의 요소 수
int [] # int int 색인 (동일idx기능)
int [] + int int [] 배열에 요소를 푸시합니다 (배열 끝에 추가)
int [] + int [] int [] 토토 연결 (오른쪽 토토이 왼쪽 끝에 추가 하나)
int [] - int int [] 배열에서 오른쪽 인수 일치하는 항목 제거
int [] - int [] int [] 왼쪽에서 오른쪽 배열의 요소 제거
int [] | int int [] 논쟁의 연합
int [] | int [] int [] 어레이의 연합
int [] & int [] int [] 토토 교차점
int [] @@ query_int 부울 true토토이 쿼리를 만족시키는 경우 (참조 아래에)
query_int ~~ int [] 부울 true토토이 쿼리를 만족시키는 경우 (의 정류자@@)

(Postgresql 8.2 이전, 격리 연산자@and<@각각 호출@and~. 이 이름은 여전히 ​​사용 가능하지만 그렇습니다 감가 상각되고 결국 은퇴 할 것이다. 노인을 주목하십시오 이름은 이전에 컨벤션에서 반전 된 후 핵심 기하학적 데이터 유형!)

연산자&&, @and<@are 동등한PostgreSQL's 동일한 이름의 내장 운영자는 널이 포함되어 있지 않은 정수 배열, 내장형 연산자는 모든 배열 유형에 대해 작동합니다. 이 제한은 그것들을 만듭니다 많은 경우에 내장 운영자보다 빠릅니다.

the@@and~~운영자는 배열이 a를 충족하는지 테스트합니다.쿼리전문 데이터 유형query_int. 에이쿼리확인 된 정수 값으로 구성됩니다 배열의 요소에 대해 연산자&(및),|(또는) 및!(아님). 괄호는 필요에 따라 사용할 수 있습니다. 예를 들어, 쿼리1 & (2 | 3)1이 포함 된 배열 일치 또한 2 또는 3을 포함합니다.

F.18.2. 색인 지원하다

intarray인덱스 지원을 제공합니다 그만큼&&, @, <@@@운영자 및 일반 배열 평등.

두 개의 요점 인덱스 연산자 클래스가 제공됩니다 :gist__int_ops(기본적으로 사용)는 적합합니다 중소형 데이터 세트,gist__intbig_ops더 큰 서명을 사용하고 더 많습니다 큰 데이터 세트 (즉, 다수의 별개의 토토 값). 구현은 an을 사용합니다 LOSSY 압축 내장 된 RD-Tree 데이터 구조.

비 디폴트 진 운영자 클래스도 있습니다gin__int_ops동일한 연산자 지원.

GIST와 GIN 인덱싱 사이의 선택은 상대에 따라 다릅니다. 논의 된 GIST 및 GIN의 성능 특성 다른 곳. 경험상, 진 지수는 검색이 더 빠릅니다. 요지 지수이지만 구축 또는 업데이트가 느리게 진행됩니다. 그래서 진이 낫습니다 정적 데이터 및 종종 업데이트 된 데이터에 대한 GIST에 적합합니다.

F.18.3. 예

- 메시지는 하나 이상일 수 있습니다"섹션"테이블 메시지 작성 (Mid int 기본 키, 섹션 int [], ...);

- 특수 인덱스를 만듭니다
GIST를 사용하여 메시지에서 색인 Message_rdTree_idx를 작성하십시오 (GIST__INT_OPS 섹션);

- 섹션 1 또는 2에서 메시지 선택 - 연산자 중첩
Message.Sections && '1,2';

- 섹션 1 및 2에서 메시지 선택 - 운영자가 포함됩니다.
message.sections.sections @ '1,2';

- 쿼리 연산자를 사용하여 동일합니다
Message.sections.sections.sections.sections.sections.sections.sections.mid를 선택하십시오.

F.18.4. 기준

소스 디렉토리Contrib/Intarray/Bench벤치 마크 테스트를 포함합니다 모음곡. 달리기 :

CD .../벤치
생성 된 테스트
psql test <../_int.sql
./create_test.pl | PSQL 테스트
./Bench.pl

theBench.pl스크립트에는 많습니다 옵션은 아무것도없이 실행될 때 표시되는 옵션 논쟁.

F.18.5. 저자

모든 작업은 Teodor Sigaev (에 의해 수행되었습니다.) 및 올레그 Bartunov (). 보다http : //www.sai.msu.su/~megera/postgres/gist/추가 정보. Andrey Oktyabrski는 훌륭한 일을했습니다 새로운 기능 및 운영 추가.