지원되는 버전:현재 (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'::와이즈 토토[], '설명') {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
하위 배열(와이즈 토토[], 와이즈 토토 시작, 정수 길이) 정수[] 위치에서 시작하는 배열 부분시작, len요소 하위 배열('1,2,3,2,1'::와이즈 토토[], 2, 3) {2,3,2}
하위 배열(와이즈 토토[], 와이즈 토토 시작) 정수[] 위치에서 시작하는 배열 부분시작 하위 배열('1,2,3,2,1'::와이즈 토토[], 2) {2,3,2,1}
와이즈 토토set(와이즈 토토) 정수[] 단일 요소 배열 만들기 와이즈 토토set(42) {42}

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

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

(PostgreSQL 8.2 이전에는 격리 연산자@그리고<@이었어 각각 호출됨@그리고~. 이 이름은 여전히 사용 가능하지만 더 이상 사용되지 않으며 결국 폐기될 예정입니다. 주의할 점은 오래된 이름은 이전 규칙과 반대로 바뀌었습니다. 핵심 기하학적 데이터 유형!)

운영자&&, @그리고<@다음과 동일함포스트그레SQL의 내장 연산자 같은 이름입니다. 단, 정수 배열에서만 작동한다는 점만 다릅니다. null을 포함하지 않는 반면 내장 연산자는 어떤 경우에도 작동합니다. 배열 유형. 이 제한으로 인해 많은 경우 내장 연산자가 있습니다.

@@그리고~~연산자는 배열이 다음을 충족하는지 테스트합니다.질의18933_18998query_와이즈 토토. 갑질의정수 값으로 구성됩니다. 배열의 요소에 대해 검사됩니다. 연산자를 사용하여 결합&(그리고),|(OR) 및!(아님). 필요에 따라 괄호를 사용할 수 있습니다. 에 대한 예, 쿼리1&(2|3)일치 1을 포함하고 2 또는 3도 포함하는 배열입니다.

F.18.2. 인덱스 지원

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

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

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

GiST와 GIN 인덱싱 중 선택은 다음에 따라 다릅니다. GiST와 GIN의 상대적인 성능 특성은 다음과 같습니다. 다른 곳에서 논의되었습니다. 경험상 GIN 지수가 더 빠릅니다. GiST 인덱스보다 검색하지만 구축 또는 업데이트 속도가 느립니다. 그래서 GIN은 정적 데이터에 더 적합하고 GiST는 자주 업데이트되는 데이터에 더 적합합니다. 데이터.

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벤치마크가 포함되어 있습니다 테스트 스위트. 실행하려면:

cd .../벤치
생성된 테스트
psql 테스트 < ../_와이즈 토토.sql
./create_test.pl | psql 테스트
./bench.pl

bench.pl스크립트에는 수많은 옵션 없이 실행될 때 표시되는 옵션 인수.

F.18.5. 저자

모든 작업은 Teodor Sigaev에 의해 수행되었습니다 () 및 올렉 바르투노프(). 참조http://www.sai.msu.su/~megera/postgres/gist/용 추가 정보. Andrey Oktyabrski가 훌륭한 작업을 수행했습니다. 새로운 기능과 작업을 추가합니다.