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

F.19. intarray — 스포츠 토토 배열 조작#

인타레이모듈은 null이 없는 스포츠 토토 배열을 조작하는 데 유용한 여러 함수와 연산자를 제공합니다. 일부 연산자를 사용한 색인 검색도 지원됩니다.

제공된 배열에 NULL 요소가 포함되어 있으면 이러한 모든 작업은 오류를 발생시킵니다.

이러한 작업 중 다수는 1차원 배열에만 적합합니다. 더 많은 차원의 입력 배열을 허용하더라도 데이터는 저장 순서에 따라 선형 배열인 것처럼 처리됩니다.

이 모듈은 고려됩니다.신뢰할 수 있는, 즉, 슈퍼유저가 아닌 사용자가 설치할 수 있습니다.만들기현재 데이터베이스에 대한 권한입니다.

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

에서 제공하는 기능인타레이모듈은 다음에 표시됩니다.표 F.8, 연산자표 F.9.

표 F.8. 인타레이기능

기능

설명

카운트 ( 스포츠 토토[] ) → 스포츠 토토

배열의 요소 수를 반환합니다.

icount('1,2,3'::스포츠 토토[])3

정렬 ( 스포츠 토토[], dir 텍스트 ) → 스포츠 토토[]

배열을 오름차순 또는 내림차순으로 정렬합니다.디렉터리반드시오름차순또는설명.

sort('1,3,2'::integer[], 'desc'){3,2,1}

정렬 ( 스포츠 토토[] ) → 스포츠 토토[]

sort_asc ( 스포츠 토토[] ) → 스포츠 토토[]

오름차순으로 정렬합니다.

정렬(배열[11,77,44]){11,44,77}

sort_desc ( 스포츠 토토[] ) → 스포츠 토토[]

내림차순으로 정렬됩니다.

sort_desc(배열[11,77,44]){77,44,11}

유니크 ( 스포츠 토토[] ) → 스포츠 토토[]

인접한 중복 항목을 제거합니다. 종종 다음과 함께 사용됩니다.정렬모든 중복 항목을 제거합니다.

uniq('1,2,2,3,1,1'::스포츠 토토[]){1,2,3,1}

uniq(sort('1,2,3,2,1'::스포츠 토토[])){1,2,3}

idx ( 스포츠 토토[], 항목 스포츠 토토 ) → 스포츠 토토

일치하는 첫 번째 배열 요소의 인덱스를 반환합니다.항목또는 일치하지 않는 경우 0입니다.

idx(배열[11,22,33,22,11], 22)2

하위 배열 ( 스포츠 토토[], 시작 스포츠 토토, len 스포츠 토토 ) → 스포츠 토토[]

위치에서 시작하는 배열 부분 추출시작, 와len요소.

하위 배열('1,2,3,2,1'::스포츠 토토[], 2, 3){2,3,2}

하위 배열 ( 스포츠 토토[], 시작 스포츠 토토 ) → 스포츠 토토[]

위치에서 시작하는 배열 부분 추출시작.

하위 배열('1,2,3,2,1'::스포츠 토토[], 2){2,3,2,1}

인세트 ( 스포츠 토토 ) → 스포츠 토토[]

단일 요소 배열을 만듭니다.

intset(42){42}


표 F.9. 인타레이운영자

운영자

설명

스포츠 토토[] && 스포츠 토토[]부울

배열이 겹치나요(적어도 하나의 공통 요소가 있음)?

스포츠 토토[] @ 스포츠 토토[]부울

왼쪽 배열에 오른쪽 배열이 포함되어 있습니까?

스포츠 토토[] <@ 스포츠 토토[]부울

왼쪽 배열이 오른쪽 배열에 포함되어 있습니까?

# 스포츠 토토[]스포츠 토토

배열의 요소 수를 반환합니다.

스포츠 토토[] # 스포츠 토토스포츠 토토

오른쪽 인수와 일치하는 첫 번째 배열 요소의 인덱스를 반환하거나 일치하지 않는 경우 0을 반환합니다. (동일함idx함수.)

스포츠 토토[] + 스포츠 토토스포츠 토토[]

배열 끝에 요소를 추가합니다.

스포츠 토토[] + 스포츠 토토[]스포츠 토토[]

배열을 연결합니다.

스포츠 토토[] - 스포츠 토토스포츠 토토[]

배열에서 올바른 인수와 일치하는 항목을 제거합니다.

스포츠 토토[] - 스포츠 토토[]스포츠 토토[]

왼쪽 배열에서 오른쪽 배열의 요소를 제거합니다.

스포츠 토토[] | 스포츠 토토스포츠 토토[]

인수의 합집합을 계산합니다.

스포츠 토토[] | 스포츠 토토[]스포츠 토토[]

인수의 합집합을 계산합니다.

스포츠 토토[] & 스포츠 토토[]스포츠 토토[]

인수의 교집합을 계산합니다.

스포츠 토토[] @@ query_int부울

배열이 쿼리를 만족합니까? (아래 참조)

query_int ~~ 스포츠 토토[]부울

배열이 쿼리를 만족합니까? (정류자@@)


운영자&&, @그리고<@다음과 동일함포스트그레SQL의 동일한 이름을 가진 내장 연산자. 단, null을 포함하지 않는 스포츠 토토 배열에서만 작동하는 반면 내장 연산자는 모든 배열 유형에 대해 작동합니다. 이러한 제한으로 인해 많은 경우 내장 연산자보다 속도가 빨라집니다.

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

F.19.2. 인덱스 지원#

인타레이다음에 대한 색인 지원을 제공합니다.&&, @@@연산자 및 일반 배열 동일성.

두 개의 매개변수화된 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의 상대적인 성능 특성에 따라 달라지며 이에 대해서는 다른 곳에서 논의됩니다.

F.19.3. 예시#

-- 메시지는 하나 이상에 포함될 수 있습니다.섹션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 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_int;

F.19.4. 벤치마크#

소스 디렉토리contrib/intarray/bench설치된 제품에 대해 실행할 수 있는 벤치마크 테스트 모음이 포함되어 있습니다.PostgreSQL서버. (또한 필요합니다.DBD::Pg설치 예정.) 실행하려면:

cd .../contrib/intarray/벤치
생성된 테스트
psql -c "확장 인타레이 생성" 테스트
./create_test.pl | psql 테스트
./bench.pl

bench.pl스크립트에는 인수 없이 실행될 때 표시되는 다양한 옵션이 있습니다.

F.19.5. 저자#

모든 작업은 Teodor Sigaev에 의해 수행되었습니다. () 및 Oleg Bartunov(). 참조http://www.sai.msu.su/~megera/postgres/gist/추가 정보를 확인하세요. Andrey Oktyabrski는 새로운 기능과 작업을 추가하는 데 훌륭한 작업을 수행했습니다.