| 젠 토토 : 문서 : 9.6 : 젠 토토 | |||
|---|---|---|---|
| 이전 | PostgreSQL : 문서 : 9.6 : 추가 제공 토토 사이트 추천 | 부록 F. 추가 제공 모듈 | 토토 캔 : 문서 : 9.6 : ISN |
그인타레이모듈은 null이 없는 정수 배열을 조작하는 데 유용한 여러 함수와 연산자를 제공합니다. 일부 연산자를 사용한 색인 검색도 지원됩니다.
제공된 배열에 NULL 요소가 포함되어 있으면 이러한 모든 작업은 오류를 발생시킵니다.
이러한 작업 중 다수는 1차원 배열에만 적합합니다. 더 많은 차원의 입력 배열을 허용하더라도 데이터는 저장 순서에 따라 선형 배열인 것처럼 처리됩니다.
제공되는 기능인타레이모듈은 다음 위치에 표시됩니다.표 F-10, 연산자표 F-11.
표 F-10.인타레이기능
| 기능 | 반환 유형 | 설명 | 예 | 결과 |
|---|---|---|---|---|
icount(범퍼카 토토[]) |
범퍼카 토토 | 배열의 요소 수 | icount('1,2,3'::범퍼카 토토[]) | 3 |
sort(범퍼카 토토[], 텍스트 디렉토리) |
정수[] | 배열 정렬 —dir반드시오름차순또는설명 | sort('1,2,3'::범퍼카 토토[], 'desc') | {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 |
하위 배열(범퍼카 토토[], 범퍼카 토토 start, 범퍼카 토토 len) |
정수[] | 위치에서 시작하는 배열 부분시작, len요소 | 하위 배열('1,2,3,2,1'::범퍼카 토토[], 2, 3) | {2,3,2} |
하위 배열(범퍼카 토토[], 범퍼카 토토 start) |
정수[] | 위치에서 시작하는 배열 부분시작 | 하위 배열('1,2,3,2,1'::범퍼카 토토[], 2) | {2,3,2,1} |
범퍼카 토토set(범퍼카 토토) |
정수[] | 단일 요소 배열 만들기 | 범퍼카 토토set(42) | {42} |
표 F-11.인타레이연산자
| 운영자 | 반품 | 설명 |
|---|---|---|
| 범퍼카 토토[] && 범퍼카 토토[] | 부울 | 겹침 —참배열에 하나 이상의 공통 요소가 있는 경우 |
| 범퍼카 토토[] @ 범퍼카 토토[] | 부울 | 포함 —참왼쪽 배열에 오른쪽 배열이 포함된 경우 |
| 범퍼카 토토[] <@ 범퍼카 토토[] | 부울 | 포함 —참왼쪽 배열이 오른쪽 배열에 포함된 경우 |
| # 정수[] | 범퍼카 토토 | 배열의 요소 수 |
| 범퍼카 토토[] # 범퍼카 토토 | 범퍼카 토토 | 색인(동일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 메시지 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/bench설치된 제품에 대해 실행할 수 있는 벤치마크 테스트 모음이 포함되어 있습니다.PostgreSQL서버. (또한 필요합니다.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는 새로운 기능과 작업을 추가하는 데 훌륭한 작업을 수행했습니다.