이 문서는 지원되지 않는 PostgreSQL 버전에 대한 것입니다.
당신은 다음과 같은 페이지를 보고 싶을 수도 있습니다.PostgreSQL : 문서 : 17 : F.19. intarray - 스포츠 토토 베트맨의 배열 조작버전 또는 위에 나열된 다른 지원 버전 중 하나를 사용하세요.

F.18. 인타레이

인타레이모듈은 숫자를 제공합니다 null이 없는 배열을 조작하는 데 유용한 함수 및 연산자 정수. 일부를 사용한 색인 검색도 지원됩니다. 운영자 중.

이 모든 작업은 제공된 토토이 있는 경우 오류를 발생시킵니다. NULL 요소가 포함되어 있습니다.

이러한 작업 중 다수는 1차원에만 적합합니다. 토토. 더 많은 차원의 입력 토토을 허용하지만 데이터는 스토리지의 선형 토토인 것처럼 처리됩니다. 주문하세요.

F.18.1.인타레이함수 및 연산자

제공되는 기능인타레이모듈은 다음에 표시됩니다.표 F-10, 연산자 에서표 F-11.

표 F-10.인타레이기능

기능 반환 유형 설명 결과
icount(int[]) int 토토의 요소 수 icount('1,2,3'::int[]) 3
sort(int[], 텍스트 디렉토리) 정수[] 토토 정렬 —dir반드시오름차순또는설명 sort('1,2,3'::int[], 'desc') {3,2,1}
정렬(int[]) 정수[] 오름차순으로 정렬 정렬(토토[11,77,44]) {11,44,77}
sort_asc(int[]) 정수[] 오름차순으로 정렬
sort_desc(int[]) 정수[] 내림차순으로 정렬
uniq(int[]) 정수[] 인접한 중복 항목 제거 uniq(sort('1,2,3,2,1'::int[])) {1,2,3}
idx(int[], int 항목) int 첫 번째 요소 일치 색인항목(없으면 0) idx(토토[11,22,33,22,11], 22) 2
하위 배열(int[], int start, int 렌) 정수[] 위치에서 시작하는 토토 부분시작, len요소 하위 배열('1,2,3,2,1'::int[], 2, 3) {2,3,2}
하위 배열(int[], int start) 정수[] 위치에서 시작하는 토토 부분시작 하위 배열('1,2,3,2,1'::int[], 2) {2,3,2,1}
intset(int) 정수[] 단일 요소 배열 만들기 intset(42) {42}

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

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

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

운영자&&, @그리고<@있습니다 에 해당함PostgreSQL의 동일한 이름의 내장 연산자(단, 다음에서만 작동함) null을 포함하지 않는 정수 배열, 내장 연산자는 모든 배열 유형에 작동합니다. 이 제한은 그들을 대부분의 경우 내장 연산자보다 빠릅니다.

@@그리고~~연산자는 배열이 다음을 충족하는지 테스트합니다.질의는 a의 값으로 표현됩니다. 특수 데이터 유형query_int. 갑질의확인된 정수 값으로 구성됩니다. 배열 요소에 대해 가능하며 다음을 사용하여 결합할 수 있습니다. 연산자&(그리고),|(OR) 및!(아님). 필요에 따라 괄호를 사용할 수 있습니다. 예를 들어 쿼리1&(2|3)1을 포함하는 배열과 일치합니다. 2 또는 3도 포함합니다.

F.18.2. 색인 지원

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

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

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

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

F.18.3. 예시

-- 메시지는 하나 이상에 포함될 수 있습니다."섹션"CREATE TABLE 메시지(INT PRIMARY KEY 중간, INT[] 섹션, ...);

-- 특수 인덱스 생성
GIST를 사용하여 INDEX message_rdtree_idx ON 메시지 생성(gist__int_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_int;

F.18.4. 벤치마크

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

cd .../벤치
생성된 테스트
psql 테스트 < ../_int.sql
./create_test.pl | psql 테스트
./bench.pl

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

F.18.5. 저자

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