지원되는 버전:현재 (18) / 17 / 16 / 15 / 14 / 13
개발 버전:개발
지원되지 않는 버전:12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0 / 8.4 / 8.3
이 문서는 지원되지 않는 PostgreSQL 버전에 대한 것입니다.
당신은 다음과 같은 페이지를 보고 싶을 수도 있습니다.현재버전 또는 위에 나열된 다른 지원 버전 중 하나를 사용하세요.

F.18. 인타레이

인타레이모듈은 null이 없는 정수 배열을 조작하는 데 유용한 여러 함수와 연산자를 제공합니다. 일부 연산자를 사용한 색인 검색도 지원됩니다.

제공된 배열에 NULL 요소가 포함되어 있으면 이러한 모든 작업은 오류를 발생시킵니다.

이러한 작업 중 다수는 1차원 배열에만 적합합니다. 더 많은 차원의 입력 배열을 허용하더라도 데이터는 저장 순서에 따라 선형 배열인 것처럼 처리됩니다.

F.18.1.인타레이함수 및 연산자

제공되는 기능인타레이모듈은 다음 위치에 표시됩니다.표 F-10, 연산자표 F-11.

표 F-10.인타레이기능

기능 반환 유형 설명 결과
icount(범퍼카 토토[]) 범퍼카 토토 배열의 요소 수 icount('1,2,3'::범퍼카 토토[]) 3
sort(범퍼카 토토[], 텍스트 디렉토리) 정수[] 배열 정렬 —dir반드시오름차순또는설명 sort('1,2,3'::범퍼카 토토[], 'desc') {3,2,1}
정렬(범퍼카 토토[]) 정수[] 오름차순으로 정렬 정렬(배열[11,77,44]) {11,44,77}
sort_asc(범퍼카 토토[]) 정수[] 오름차순으로 정렬
sort_desc(범퍼카 토토[]) 정수[] 내림차순으로 정렬
uniq(범퍼카 토토[]) 정수[] 인접한 중복 항목 제거 uniq(sort('1,2,3,2,1'::범퍼카 토토[])) {1,2,3}
idx(범퍼카 토토[], 범퍼카 토토 항목) 범퍼카 토토 첫 번째 요소 일치 색인항목(없으면 0) idx(배열[11,22,33,22,11], 22) 2
하위 배열(범퍼카 토토[], 범퍼카 토토 start, 범퍼카 토토 len) 정수[] 위치에서 시작하는 배열 부분시작, len요소 하위 배열('1,2,3,2,1'::범퍼카 토토[], 2, 3) {2,3,2}
하위 배열(범퍼카 토토[], 범퍼카 토토 start) 정수[] 위치에서 시작하는 배열 부분시작 하위 배열('1,2,3,2,1'::범퍼카 토토[], 2) {2,3,2,1}
범퍼카 토토set(범퍼카 토토) 정수[] 단일 요소 배열 만들기 범퍼카 토토set(42) {42}

표 F-11.인타레이연산자

운영자 반품 설명
범퍼카 토토[] && 범퍼카 토토[] 부울 겹침 —배열에 하나 이상의 공통 요소가 있는 경우
범퍼카 토토[] @ 범퍼카 토토[] 부울 포함 —왼쪽 배열에 오른쪽 배열이 포함된 경우
범퍼카 토토[] <@ 범퍼카 토토[] 부울 포함 —왼쪽 배열이 오른쪽 배열에 포함된 경우
# 정수[] 범퍼카 토토 배열의 요소 수
범퍼카 토토[] # 범퍼카 토토 범퍼카 토토 색인(동일idx함수)
정수[] + 정수 정수[] 요소를 배열에 푸시(배열 끝에 추가)
범퍼카 토토[] + 범퍼카 토토[] 정수[] 배열 연결(왼쪽 배열 끝에 오른쪽 배열 추가)
정수[] - 정수 정수[] 배열에서 올바른 인수와 일치하는 항목 제거
정수[] - 정수[] 정수[] 오른쪽 배열의 요소를 왼쪽에서 제거
정수[] | 정수 정수[] 인수 결합
정수[] | 정수[] 정수[] 배열의 합집합
정수[] & 정수[] 정수[] 배열의 교차점
범퍼카 토토[] @@ query_범퍼카 토토 부울 사실배열이 쿼리를 만족하는 경우(아래 참조)
query_범퍼카 토토 ~~ 범퍼카 토토[] 부울 배열이 쿼리를 만족하는 경우(정류자@@)

(PostgreSQL 8.2 이전에는 격리 연산자@그리고<@각각 호출되었습니다@그리고~. 이러한 이름은 계속 사용할 수 있지만 더 이상 사용되지 않으며 결국 사용 중지됩니다. 이전 이름은 이전에 핵심 기하학적 데이터 유형이 뒤따랐던 규칙과 반대입니다!)

운영자&&, @그리고<@다음과 동일함PostgreSQL의 동일한 이름을 가진 내장 연산자. 단, null을 포함하지 않는 정수 배열에서만 작동하는 반면 내장 연산자는 모든 배열 유형에 작동합니다. 이러한 제한으로 인해 많은 경우 내장 연산자보다 속도가 빨라집니다.

@@그리고~~연산자는 배열이 다음을 충족하는지 테스트합니다.질의, 특화된 데이터 유형의 값으로 표현됨query_범퍼카 토토. 갑질의배열의 요소에 대해 확인되는 정수 값으로 구성되며 연산자를 사용하여 결합할 수 있음&(그리고),|(OR) 및!(아님). 필요에 따라 괄호를 사용할 수 있습니다. 예를 들어 쿼리1&(2|3)1을 포함하고 2 또는 3도 포함하는 배열과 일치합니다.

F.18.2. 인덱스 지원

인타레이에 대한 색인 지원 제공&&, @, <@@@연산자 및 일반 배열 동일성.

두 개의 GiST 인덱스 연산자 클래스가 제공됩니다:gist__범퍼카 토토_ops(기본적으로 사용됨)은 중소 규모 데이터 세트에 적합하지만gist__범퍼카 토토big_ops는 더 큰 서명을 사용하며 대규모 데이터 세트(예: 다수의 개별 배열 값을 포함하는 열)를 인덱싱하는 데 더 적합합니다. 구현에서는 손실 압축이 내장된 RD-트리 데이터 구조를 사용합니다.

기본이 아닌 GIN 연산자 클래스도 있습니다gin__범퍼카 토토_ops동일한 연산자를 지원합니다.

GiST와 GIN 인덱싱 간의 선택은 GiST와 GIN의 상대적인 성능 특성에 따라 달라지며 이에 대해서는 다른 곳에서 논의됩니다.

F.18.3. 예시

-- 메시지는 하나 이상에 포함될 수 있습니다."섹션"CREATE TABLE 메시지(INT PRIMARY KEY 중간, INT[] 섹션, ...);

-- 특수 인덱스 생성
GIST를 사용하여 INDEX message_rdtree_idx ON 메시지 생성(gist__범퍼카 토토_ops 섹션);

-- 섹션 1 또는 2에서 메시지 선택 - OVERLAP 연산자
SELECT message.mid FROM 메시지 WHERE message.sections && '1,2';

-- 섹션 1과 2에서 메시지를 선택하세요. - CONTAINS 연산자
SELECT message.mid FROM 메시지 WHERE message.sections @ '1,2';

-- QUERY 연산자를 사용하여 동일
SELECT message.mid FROM 메시지 WHERE message.sections @@ '1&2'::query_범퍼카 토토;

F.18.4. 벤치마크

소스 디렉토리contrib/범퍼카 토토array/bench설치된 제품에 대해 실행할 수 있는 벤치마크 테스트 모음이 포함되어 있습니다.PostgreSQL서버. (또한 필요합니다.DBD::Pg설치 예정.) 실행하려면:

cd .../contrib/범퍼카 토토array/벤치
생성된 테스트
psql -c "확장 인타레이 생성" 테스트
./create_test.pl | psql 테스트
./bench.pl

bench.pl스크립트에는 인수 없이 실행될 때 표시되는 다양한 옵션이 있습니다.

F.18.5. 저자

모든 작업은 Teodor Sigaev에 의해 수행되었습니다. () 및 Oleg Bartunov(). 참조http://www.sai.msu.su/~megera/postgres/gist/추가 정보를 확인하세요. Andrey Oktyabrski는 새로운 기능과 작업을 추가하는 데 훌륭한 작업을 수행했습니다.