지원되는 버전:현재 (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.9, 연산자표 F.10.

표 F.9. 인타레이기능

기능 반환 유형 설명 결과
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.10. 인타레이연산자

운영자 반환 설명
토토 사이트[] && 토토 사이트[] 부울 겹침 —배열에 하나 이상의 공통 요소가 있는 경우
토토 사이트[] @ 토토 사이트[] 부울 포함 —왼쪽 배열에 오른쪽 배열이 포함된 경우
토토 사이트[] <@ 토토 사이트[] 부울 포함 —왼쪽 배열이 오른쪽 배열에 포함된 경우
# 정수[] 토토 사이트 배열의 요소 수
토토 사이트[] # 토토 사이트 토토 사이트 색인(동일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 message 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/벤치설치된 제품에 대해 실행할 수 있는 벤치마크 테스트 모음이 포함되어 있습니다.포스트그레SQL서버. (또한 필요합니다.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는 새로운 기능과 작업을 추가하는 데 훌륭한 작업을 수행했습니다.