그인타레이모듈은 null이 없는 정수 배열을 조작하는 데 유용한 여러 함수와 연산자를 제공합니다. 일부 연산자를 사용한 색인 검색도 지원됩니다.
제공된 배열에 NULL 요소가 포함된 경우 이러한 모든 작업은 오류를 발생시킵니다.
이러한 작업 중 다수는 1차원 배열에만 적합합니다. 더 많은 차원의 입력 배열을 허용하더라도 데이터는 저장 순서에 따라 선형 배열인 것처럼 처리됩니다.
인타레이함수 및 연산자다음에서 제공하는 기능인타레이모듈은 다음에 표시됩니다.표 F.9, 연산자표 F.10.
표 F.9. 인타레이기능
표 F.10. 인타레이연산자
| 운영자 | 반환 | 설명 |
|---|---|---|
토토 사이트[] && 토토 사이트[] |
부울 |
겹침 —참배열에 하나 이상의 공통 요소가 있는 경우 |
토토 사이트[] @ 토토 사이트[] |
부울 |
포함 —참왼쪽 배열에 오른쪽 배열이 포함된 경우 |
토토 사이트[] <@ 토토 사이트[] |
부울 |
포함 —참왼쪽 배열이 오른쪽 배열에 포함된 경우 |
# 정수[] |
토토 사이트 |
배열의 요소 수 |
토토 사이트[] # 토토 사이트 |
토토 사이트 |
색인(동일idx함수) |
정수[] + 정수 |
정수[] |
요소를 배열에 푸시합니다(배열의 끝에 추가) |
토토 사이트[] + 토토 사이트[] |
정수[] |
배열 연결(왼쪽 배열 끝에 오른쪽 배열 추가) |
정수[] - 정수 |
정수[] |
배열에서 올바른 인수와 일치하는 항목 제거 |
정수[] - 정수[] |
정수[] |
왼쪽에서 오른쪽 배열 요소 제거 |
정수[] | 정수 |
정수[] |
인수 통합 |
정수[] | 정수[] |
정수[] |
배열의 합집합 |
정수[] & 정수[] |
정수[] |
배열의 교차점 |
토토 사이트[] @@ query_토토 사이트 |
부울 |
참배열이 쿼리를 만족하는 경우(아래 참조) |
query_토토 사이트 ~~ 토토 사이트[] |
부울 |
사실배열이 쿼리를 만족하는 경우(정류자@@) |
(PostgreSQL 8.2 이전에는 격리 연산자@그리고<@각각 호출되었습니다@그리고~. 이러한 이름은 계속 사용할 수 있지만 더 이상 사용되지 않으며 결국 사용 중지됩니다. 이전 이름은 이전에 핵심 기하학적 데이터 유형이 뒤따랐던 규칙과 반대입니다!)
운영자&&, @그리고<@다음과 동일함PostgreSQL의 동일한 이름을 가진 내장 연산자. 단, null을 포함하지 않는 정수 배열에서만 작동하는 반면 내장 연산자는 모든 배열 유형에 작동합니다. 이러한 제한으로 인해 많은 경우 내장 연산자보다 속도가 빨라집니다.
그@@그리고~~연산자는 배열이 다음을 충족하는지 테스트합니다.질의, 특화된 데이터 유형의 값으로 표현됨query_토토 사이트. 갑질의배열의 요소에 대해 검사되는 정수 값으로 구성되며 연산자를 사용하여 결합할 수 있음&(그리고),|(OR) 및!(아닙니다). 필요에 따라 괄호를 사용할 수 있습니다. 예를 들어 쿼리1&(2|3)1을 포함하고 2 또는 3도 포함하는 배열과 일치합니다.
인타레이에 대한 색인 지원 제공&&, @, <@및@@연산자 및 일반 배열 동일성.
두 개의 GiST 인덱스 연산자 클래스가 제공됩니다:gist__토토 사이트_ops(기본적으로 사용됨)은 중소 규모 데이터 세트에 적합하지만gist__토토 사이트big_ops은 더 큰 서명을 사용하며 대규모 데이터 세트(즉, 다수의 개별 배열 값을 포함하는 열)를 색인화하는 데 더 적합합니다. 구현에서는 손실 압축이 내장된 RD-트리 데이터 구조를 사용합니다.
기본이 아닌 GIN 연산자 클래스도 있습니다gin__토토 사이트_ops동일한 연산자를 지원합니다.
GiST와 GIN 인덱싱 간의 선택은 GiST와 GIN의 상대적인 성능 특성에 따라 달라지며 이에 대해서는 다른 곳에서 논의됩니다.
-- 메시지는 하나 이상에 포함될 수 있습니다.“섹션”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_토토 사이트;
소스 디렉토리contrib/토토 사이트array/벤치설치된 제품에 대해 실행할 수 있는 벤치마크 테스트 모음이 포함되어 있습니다.포스트그레SQL서버. (또한 필요합니다.DBD::Pg설치 예정.) 실행하려면:
cd .../contrib/토토 사이트array/벤치 생성된 테스트 psql -c "확장 인타레이 생성" 테스트 ./create_test.pl | psql 테스트 ./bench.pl
그bench.pl스크립트에는 인수 없이 실행될 때 표시되는 다양한 옵션이 있습니다.
모든 작업은 Teodor Sigaev에 의해 수행되었습니다 (<teodor@sigaev.ru) 및 Oleg Bartunov(<oleg@sai.msu.su). 참조http://www.sai.msu.su/~megera/postgres/gist/추가 정보를 확인하세요. Andrey Oktyabrski는 새로운 기능과 작업을 추가하는 데 훌륭한 작업을 수행했습니다.