지원되는 버전:현재 (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.15. 인타레이

인타레이모듈은 다음을 제공합니다. 조작에 유용한 함수 및 연산자의 수 1차원 정수 배열. 에 대한 지원도 있습니다. 일부 연산자를 사용한 색인 검색입니다.

F.15.1.인타레이기능 및 운영자

표 F-7.인타레이기능

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

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

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

봉쇄 운영자@그리고<@거의 다음과 같습니다.PostgreSQL의 내장 같은 이름의 연산자입니다. 단, 해당 연산자는 다음에서만 작동합니다. 내장 연산자가 모든 배열에 대해 작동하는 동안 정수 배열 유형. 중요한 차이점은 다음과 같습니다.인타레이의 연산자는 비어 있는 것으로 간주하지 않습니다. 다른 어떤 것에도 포함될 수 있는 배열입니다. 이는 다음과 일치합니다. GIN 인덱스 쿼리의 동작(일반적인 쿼리는 아님) 봉쇄의 수학적 정의.

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

F.15.2. 인덱스 지원

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

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

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

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

F.15.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.15.4. 기준

소스 디렉토리contrib/토토 사이트array/벤치벤치마크가 포함되어 있습니다 테스트 스위트. 실행하려면:

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

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

F.15.5. 저자

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