그인타레이모듈은 null이 없는 롤 토토 배열을 조작하는 데 유용한 여러 함수와 연산자를 제공합니다. 일부 연산자를 사용한 색인 검색도 지원됩니다.
제공된 배열에 NULL 요소가 포함된 경우 이러한 모든 작업은 오류를 발생시킵니다.
이러한 작업 중 다수는 1차원 배열에만 적합합니다. 더 많은 차원의 입력 배열을 허용하더라도 데이터는 저장 순서에 따라 선형 배열인 것처럼 처리됩니다.
이 모듈은 고려됩니다.“신뢰할 수 있는”, 즉, 슈퍼유저가 아닌 사용자가 설치할 수 있습니다.만들기현재 데이터베이스에 대한 권한입니다.
인타레이함수 및 연산자#제공되는 기능인타레이모듈은 다음에 표시됩니다.표 F.9, 연산자표 F.10.
표 F.9. 인타레이기능
표 F.10. 인타레이운영자
|
운영자 설명 |
|---|
|
배열이 겹치나요(적어도 하나의 공통 요소가 있습니까)? |
|
왼쪽 배열에 오른쪽 배열이 포함되어 있습니까? |
|
왼쪽 배열이 오른쪽 배열에 포함되어 있습니까? |
|
배열의 요소 수를 반환합니다. |
|
오른쪽 인수와 일치하는 첫 번째 배열 요소의 인덱스를 반환하거나 일치하지 않는 경우 0을 반환합니다. (동일함 |
|
배열 끝에 요소를 추가합니다. |
|
배열을 연결합니다. |
|
배열에서 올바른 인수와 일치하는 항목을 제거합니다. |
|
왼쪽 배열에서 오른쪽 배열의 요소를 제거합니다. |
|
인수의 합집합을 계산합니다. |
|
인수의 합집합을 계산합니다. |
|
인수의 교차점을 계산합니다. |
|
배열이 쿼리를 만족합니까? (아래 참조) |
|
배열이 쿼리를 만족합니까? (정류자 |
운영자&&, @그리고<@다음과 동일함포스트그레SQL의 동일한 이름을 가진 내장 연산자. 단, null을 포함하지 않는 롤 토토 배열에서만 작동하는 반면 내장 연산자는 모든 배열 유형에 대해 작동합니다. 이러한 제한으로 인해 많은 경우 내장 연산자보다 속도가 빨라집니다.
그@@그리고~~연산자는 배열이 다음을 만족하는지 테스트합니다.질의, 특화된 데이터 유형의 값으로 표현됨query_int. 갑질의배열의 요소에 대해 검사되는 롤 토토 값으로 구성되며 연산자를 사용하여 결합할 수 있음&(그리고),|(OR) 및!(아닙니다). 필요에 따라 괄호를 사용할 수 있습니다. 예를 들어 쿼리1&(2|3)1을 포함하고 2 또는 3도 포함하는 배열과 일치합니다.
인타레이에 대한 색인 지원 제공&&, @및@@연산자 및 일반 배열 동일성.
두 개의 매개변수화된 GiST 인덱스 연산자 클래스가 제공됩니다:gist__int_ops(기본적으로 사용됨)은 중소 규모 데이터 세트에 적합하지만gist__intbig_ops은 더 큰 서명을 사용하며 대규모 데이터 세트(즉, 다수의 개별 배열 값을 포함하는 열)를 색인화하는 데 더 적합합니다. 구현에서는 손실 압축이 내장된 RD-트리 데이터 구조를 사용합니다.
gist__int_ops롤 토토 범위의 배열로 롤 토토 세트를 근사화합니다. 선택적 롤 토토 매개변수숫자 범위은 하나의 인덱스 키에 있는 최대 범위 수를 결정합니다. 기본값은숫자 범위은 100입니다. 유효한 값은 1에서 253 사이입니다. 더 큰 배열을 GiST 인덱스 키로 사용하면 더 큰 인덱스를 사용하는 대신 더 정확한 검색이 가능합니다(인덱스의 더 작은 부분과 더 적은 힙 페이지 스캔).
gist__intbig_ops롤 토토 세트를 비트맵 서명으로 근사화합니다. 선택적 롤 토토 매개변수시글렌서명 길이를 바이트 단위로 결정합니다. 기본 서명 길이는 16바이트입니다. 유효한 서명 길이 값은 1~2024바이트입니다. 서명이 길수록 더 큰 인덱스를 사용하는 대신 더 정확한 검색이 가능합니다(인덱스의 더 작은 부분과 더 적은 힙 페이지 검색).
기본이 아닌 GIN 연산자 클래스도 있습니다gin__int_ops, 다음 연산자도 지원합니다.<@.
GiST와 GIN 인덱싱 간의 선택은 GiST와 GIN의 상대적인 성능 특성에 따라 달라지며 이에 대해서는 다른 곳에서 논의됩니다.
-- 메시지는 하나 이상에 포함될 수 있습니다.“섹션”CREATE TABLE 메시지(INT PRIMARY KEY 중간, INT[] 섹션, ...);
-- 서명 길이가 32바이트인 특수 인덱스를 생성합니다.
GIST를 사용하여 INDEX message_rdtree_idx ON 메시지 생성(섹션 gist__intbig_ops (siglen = 32));
-- 섹션 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_int;
소스 디렉터리contrib/intarray/bench설치된 제품에 대해 실행할 수 있는 벤치마크 테스트 모음이 포함되어 있습니다.PostgreSQL서버. (또한 필요합니다.DBD::Pg설치됩니다.) 실행하려면:
cd .../contrib/intarray/벤치 생성된 테스트 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는 새로운 기능과 작업을 추가하는 데 훌륭한 작업을 수행했습니다.
문서에 올바르지 않은 내용이 있으면 일치하지 않습니다. 특정 기능에 대한 경험이 있거나 추가 설명이 필요한 경우 이용해주세요이 양식문서 문제를 보고합니다.