지원되는 버전:현재 (18) / 17 / 16 / 15 / 14 / 13
개발 버전:개발
지원되지 않는 버전:12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2

8.14. 토토 사이트 순위유형#

토토 사이트 순위 데이터 유형은 다음에 지정된 대로 토토 사이트 순위(JavaScript Object Notation) 데이터를 저장하기 위한 것입니다.RFC 7159. 이러한 데이터는 다음과 같이 저장할 수도 있습니다.텍스트이지만 토토 사이트 순위 데이터 유형은 저장된 각 값이 토토 사이트 순위 규칙에 따라 유효하도록 강제하는 이점이 있습니다. 또한 이러한 데이터 유형에 저장된 데이터에 사용할 수 있는 다양한 토토 사이트 순위 관련 함수와 연산자도 있습니다. 참조섹션 9.16.

PostgreSQL토토 사이트 순위 데이터 저장을 위한 두 가지 유형을 제공합니다.토토 사이트 순위그리고토토 사이트 순위b. 이러한 데이터 유형에 대한 효율적인 쿼리 메커니즘을 구현하려면,포스트그레SQL또한 다음을 제공합니다토토 사이트 순위path설명된 데이터 유형섹션 8.14.7.

토토 사이트 순위그리고토토 사이트 순위b데이터 유형 허용거의입력과 동일한 값 세트. 실질적인 주요 차이점은 효율성 중 하나입니다.토토 사이트 순위데이터 유형은 입력 텍스트의 정확한 사본을 저장하며, 처리 기능은 각 실행 시 재분석해야 합니다. 동안토토 사이트 순위b데이터는 추가된 변환 오버헤드로 인해 입력 속도가 약간 느려지는 분해된 바이너리 형식으로 저장되지만 재분석이 필요하지 않으므로 처리 속도가 훨씬 빠릅니다.토토 사이트 순위b또한 색인 생성을 지원하는데 이는 상당한 이점이 될 수 있습니다.

왜냐하면토토 사이트 순위type은 입력 텍스트의 정확한 복사본을 저장하며 토큰 사이의 의미상 중요하지 않은 공백과 토토 사이트 순위 개체 내의 키 순서를 유지합니다. 또한 값 내의 토토 사이트 순위 객체에 동일한 키가 두 번 이상 포함되어 있으면 모든 키/값 쌍이 유지됩니다. (처리 함수는 마지막 값을 작동 값으로 간주합니다.) 대조적으로,토토 사이트 순위b공백을 유지하지 않고, 객체 키의 순서를 유지하지 않으며, 중복된 객체 키를 유지하지 않습니다. 입력에 중복 키가 지정된 경우 마지막 값만 유지됩니다.

일반적으로 대부분의 애플리케이션은 토토 사이트 순위 데이터를 다음과 같이 저장하는 것을 선호합니다.토토 사이트 순위b, 객체 키 순서에 대한 레거시 가정과 같이 매우 특수한 요구 사항이 없는 한.

RFC7159는 토토 사이트 순위 문자열을 UTF8로 인코딩해야 함을 지정합니다. 따라서 데이터베이스 인코딩이 UTF8이 아닌 이상 토토 사이트 순위 유형이 토토 사이트 순위 사양을 엄격하게 준수하는 것은 불가능합니다. 데이터베이스 인코딩으로 표현할 수 없는 문자를 직접 포함하려는 시도는 실패합니다. 반대로, 데이터베이스 인코딩에서는 표현할 수 있지만 UTF8에서는 표현할 수 없는 문자는 허용됩니다.

RFC7159는 토토 사이트 순위 문자열에 다음으로 표시된 유니코드 이스케이프 시퀀스를 포함하도록 허용합니다.\uXXXX. 에 대한 입력 함수에서토토 사이트 순위유형, 유니코드 이스케이프는 데이터베이스 인코딩에 관계없이 허용되며 구문의 정확성(즉, 4개의 16진수 뒤에 오는지)만 확인합니다.\u). 그러나에 대한 입력 기능은토토 사이트 순위b은 더 엄격합니다. 데이터베이스 인코딩으로 표현할 수 없는 문자에 대한 유니코드 이스케이프를 허용하지 않습니다.토토 사이트 순위b유형도 거부함\u0000(그것은 표현할 수 없기 때문에PostgreSQL's텍스트type), 그리고 유니코드 기본 다국어 평면 외부의 문자를 지정하기 위해 유니코드 서로게이트 쌍을 사용하는 것이 정확하다고 주장합니다. 유효한 유니코드 이스케이프는 저장을 위해 동등한 단일 문자로 변환됩니다. 여기에는 서로게이트 쌍을 단일 문자로 접는 것이 포함됩니다.

참고

다음에 설명된 다양한 토토 사이트 순위 처리 함수섹션 9.16유니코드 이스케이프를 일반 문자로 변환하므로 입력이 유형인 경우에도 방금 설명한 것과 동일한 유형의 오류가 발생합니다.토토 사이트 순위아님토토 사이트 순위b. 사실은토토 사이트 순위입력 함수는 표현된 문자를 지원하지 않는 데이터베이스 인코딩에서 토토 사이트 순위 유니코드 이스케이프의 간단한 저장(처리 없이)을 허용하지만 이러한 검사를 역사적 아티팩트로 간주할 수 없도록 만들지 않습니다.

텍스트 토토 사이트 순위 입력을 다음으로 변환할 때토토 사이트 순위b, 설명된 기본 유형RFC7159는 네이티브에 효과적으로 매핑됩니다.PostgreSQL유형, 다음과 같이표 8.23. 따라서 무엇이 유효한지에는 몇 가지 사소한 추가 제약이 있습니다.토토 사이트 순위b다음에 적용되지 않는 데이터토토 사이트 순위유형은 기본 데이터 유형으로 표현할 수 있는 항목에 대한 제한에 해당하는 추상적인 토토 사이트 순위도 아닙니다. 특히,토토 사이트 순위b범위를 벗어난 숫자는 거부합니다PostgreSQL 숫자데이터 유형, while토토 사이트 순위그렇지 않습니다. 이러한 구현 정의 제한은 다음에서 허용됩니다.RFC7159. 그러나 실제로 이러한 문제는 토토 사이트 순위을 나타내는 것이 일반적이므로 다른 구현에서 발생할 가능성이 훨씬 더 높습니다.번호IEEE 754 배정밀도 부동 소수점인 기본 유형(이것은RFC7159는 명시적으로 예상하고 허용합니다). 이러한 시스템과의 교환 형식으로 토토 사이트 순위을 사용하면 원래 저장된 데이터와 비교하여 숫자 정밀도가 손실될 위험이 있습니다.PostgreSQL고려되어야 합니다.

반대로, 표에 명시된 바와 같이 토토 사이트 순위 기본 유형의 입력 형식에는 해당에 적용되지 않는 몇 가지 사소한 제한이 있습니다.포스트그레SQL유형.

표 8.23. 토토 사이트 순위 기본 유형 및 해당포스트그레SQL유형

토토 사이트 순위 기본 유형 PostgreSQL유형 참고
문자열 텍스트 \u0000은 데이터베이스 인코딩에서 사용할 수 없는 문자를 나타내는 유니코드 이스케이프와 마찬가지로 허용되지 않습니다.
번호 숫자 NaN그리고무한대값이 허용되지 않습니다.
부울 부울 소문자만그리고거짓철자가 허용됩니다.
(없음) SQLNULL다른 개념입니다

8.14.1. 토토 사이트 순위 입력 및 출력 구문#

토토 사이트 순위 데이터 유형의 입력/출력 구문은 다음에 지정되어 있습니다.RFC 7159.

다음은 모두 유효합니다.토토 사이트 순위(또는토토 사이트 순위b) 식:

-- 단순 스칼라/원시 값
-- 기본 값은 숫자, 따옴표 붙은 문자열, true, false 또는 null일 수 있습니다.
선택 '5'::토토 사이트 순위;

-- 0개 이상의 요소 배열(요소가 동일한 유형일 필요는 없음)
SELECT '[1, 2, "foo", null]'::토토 사이트 순위;

-- 키와 값의 쌍을 포함하는 객체
-- 객체 키는 항상 따옴표로 묶인 문자열이어야 합니다.
SELECT '"bar": "baz", "balance": 7.77, "active": false'::토토 사이트 순위;

-- 배열과 객체는 임의로 중첩될 수 있습니다.
SELECT '"foo": [true, "bar"], "tags": "a": 1, "b": null'::토토 사이트 순위;

앞서 언급한 바와 같이 토토 사이트 순위 값을 입력한 후 별도의 처리 없이 출력하면,토토 사이트 순위입력된 것과 동일한 텍스트를 출력하는 반면토토 사이트 순위b공백과 같이 의미상 중요하지 않은 세부정보는 보존하지 않습니다. 예를 들어, 여기서 차이점을 확인하세요.

SELECT '"bar": "baz", "balance": 7.77, "active":false'::토토 사이트 순위;
                      토토 사이트 순위
-------------------------------------------------
 "bar": "baz", "balance": 7.77, "active":false

의미적으로 중요하지 않은 한 가지 주목할 만한 세부 사항은 다음과 같습니다.토토 사이트 순위b, 기본 동작에 따라 숫자가 인쇄됩니다숫자유형. 실제로 이는 숫자를 다음과 같이 입력했음을 의미합니다.E주석은 없이 인쇄됩니다. 예를 들면 다음과 같습니다.

SELECT '"읽기": 1.230e-5'::토토 사이트 순위, '"읽기": 1.230e-5'::토토 사이트 순위b;
         토토 사이트 순위 |          토토 사이트 순위B
----------+------------
 "읽기": 1.230e-5 | "읽기": 0.00001230

그러나,토토 사이트 순위b동등성 검사와 같은 목적으로 의미상 중요하지 않더라도 이 예에서 볼 수 있듯이 후행 분수 0을 보존합니다.

토토 사이트 순위 값을 구성하고 처리하는 데 사용할 수 있는 내장 함수 및 연산자 목록은 다음을 참조하세요.섹션 9.16.

8.14.2. 토토 사이트 순위 문서 디자인#

데이터를 토토 사이트 순위으로 표현하는 것은 기존 관계형 데이터 모델보다 훨씬 더 유연할 수 있으며 이는 요구 사항이 유동적인 환경에서 매력적입니다. 동일한 애플리케이션 내에서 두 가지 접근 방식이 공존하고 서로 보완하는 것이 가능합니다. 그러나 최대한의 유연성이 필요한 애플리케이션의 경우에도 토토 사이트 순위 문서가 어느 정도 고정된 구조를 갖는 것이 좋습니다. 구조는 일반적으로 적용되지 않지만(일부 비즈니스 규칙을 선언적으로 적용하는 것은 가능하지만) 예측 가능한 구조를 사용하면 일련의 유용하게 요약하는 쿼리를 더 쉽게 작성할 수 있습니다.문서(데이텀)이 테이블에 있습니다.

토토 사이트 순위 데이터는 테이블에 저장될 때 다른 데이터 유형과 동일한 동시성 제어 고려사항을 따릅니다. 큰 문서를 저장하는 것이 가능하더라도 모든 업데이트는 전체 행에 대해 행 수준 잠금을 획득한다는 점을 명심하십시오. 트랜잭션 업데이트 중 잠금 경합을 줄이려면 토토 사이트 순위 문서를 관리 가능한 크기로 제한하는 것이 좋습니다. 이상적으로 토토 사이트 순위 문서는 각각 비즈니스 규칙에 따라 독립적으로 수정될 수 있는 더 작은 데이터로 더 이상 세분화될 수 없는 원자 데이터를 나타내야 합니다.

8.14.3. 토토 사이트 순위b격리와 존재#

테스트 중격리다음의 중요한 기능입니다.토토 사이트 순위b. 에 대한 병렬 기능 집합이 없습니다.토토 사이트 순위유형. 격리 테스트는 다음 중 하나를 수행합니다.토토 사이트 순위b문서에 다른 문서가 포함되어 있습니다. 다음 예는 명시된 경우를 제외하고 true를 반환합니다.

-- 단순 스칼라/기본 값에는 동일한 값만 포함됩니다.
SELECT '"foo"'::토토 사이트 순위b @ '"foo"'::토토 사이트 순위b;

-- 오른쪽 배열은 왼쪽 배열 내에 포함됩니다.
SELECT '[1, 2, 3]'::토토 사이트 순위b @ '[1, 3]'::토토 사이트 순위b;

-- 배열 요소의 순서는 중요하지 않으므로 다음도 마찬가지입니다.
SELECT '[1, 2, 3]'::토토 사이트 순위b @ '[3, 1]'::토토 사이트 순위b;

-- 중복된 배열 요소도 중요하지 않습니다.
SELECT '[1, 2, 3]'::토토 사이트 순위b @ '[1, 2, 2]'::토토 사이트 순위b;

-- 오른쪽에 한 쌍의 객체가 포함됩니다.
-- 왼쪽 개체 내에서:
SELECT '"제품": "PostgreSQL", "버전": 9.4, "토토 사이트 순위b": true'::토토 사이트 순위b @ '"version": 9.4'::토토 사이트 순위b;

-- 오른쪽 배열은아님다음에 포함된 것으로 간주됩니다.
-- 유사한 배열이 내부에 중첩되어 있어도 왼쪽에 배열:
SELECT '[1, 2, [1, 3]]'::토토 사이트 순위b @ '[1, 3]'::토토 사이트 순위b;  -- 거짓 결과가 나옵니다

-- 그러나 중첩 레이어를 사용하면 다음이 포함됩니다.
SELECT '[1, 2, [1, 3]]'::토토 사이트 순위b @ '[[1, 3]]'::토토 사이트 순위b;

-- 마찬가지로 여기에는 격리가 보고되지 않습니다.
SELECT '"foo": "bar": "baz"'::토토 사이트 순위b @ '"bar": "baz"'::토토 사이트 순위b;  -- 거짓 결과가 나옵니다

-- 최상위 키와 빈 객체가 포함되어 있습니다.
SELECT '"foo": "bar": "baz"'::토토 사이트 순위b @ '"foo": '::토토 사이트 순위b;

일반적인 원칙은 포함된 객체가 구조 및 데이터 내용에 있어서 포함하는 객체와 일치해야 한다는 것입니다. 아마도 일치하지 않는 일부 배열 요소나 객체 키/값 쌍을 포함하는 객체에서 삭제한 후에 가능합니다. 그러나 포함 일치를 수행할 때 배열 요소의 순서는 중요하지 않으며 중복된 배열 요소는 효과적으로 한 번만 고려된다는 점을 기억하세요.

구조가 일치해야 한다는 일반 원칙에 대한 특별한 예외로서 배열에는 기본 값이 포함될 수 있습니다.

-- 이 배열에는 기본 문자열 값이 포함되어 있습니다.
SELECT '["foo", "bar"]'::토토 사이트 순위b @ '"bar"'::토토 사이트 순위b;

-- 이 예외는 상호적이지 않습니다. -- 비포함은 여기에 보고됩니다.
SELECT '"bar"'::토토 사이트 순위b @ '["bar"]'::토토 사이트 순위b;  -- 거짓 결과가 나옵니다.

토토 사이트 순위b또한존재연산자, 이는 격리 테마의 변형입니다. 문자열(a로 제공됨)인지 여부를 테스트합니다.텍스트값)은의 최상위 수준에 개체 키 또는 배열 요소로 나타납니다.토토 사이트 순위b값. 다음 예는 명시된 경우를 제외하고 true를 반환합니다.

-- 문자열이 배열 요소로 존재합니다:
SELECT '["foo", "bar", "baz"]'::토토 사이트 순위b ? '술집';

-- 문자열이 객체 키로 존재합니다.
SELECT '"foo": "bar"'::토토 사이트 순위b ? '푸';

-- 개체 값은 고려되지 않습니다.
SELECT '"foo": "bar"'::토토 사이트 순위b ? '술집';  -- 거짓 결과가 나옵니다

-- 격리와 마찬가지로 존재 여부도 최상위 수준에서 일치해야 합니다.
SELECT '"foo": "bar": "baz"'::토토 사이트 순위b ? '술집'; -- 거짓 결과가 나옵니다

-- 기본 토토 사이트 순위 문자열과 일치하면 문자열이 존재하는 것으로 간주됩니다.
SELECT '"foo"'::토토 사이트 순위b ? '푸';

토토 사이트 순위 객체는 관련된 키나 요소가 많을 때 포함 또는 존재를 테스트하는 데 배열보다 더 적합합니다. 왜냐하면 배열과 달리 내부적으로 검색에 최적화되어 있고 선형적으로 검색할 필요가 없기 때문입니다.

토토 사이트 순위 포함이 중첩되어 있기 때문에 적절한 쿼리는 하위 개체의 명시적인 선택을 건너뛸 수 있습니다. 예를 들어, 다음이 있다고 가정해 보겠습니다.문서최상위 수준의 개체를 포함하는 열, 대부분의 개체 포함태그하위 객체의 배열을 포함하는 필드. 이 쿼리는 두 항목을 모두 포함하는 하위 개체를 찾습니다."기간":"파리"그리고"용어":"음식"나타나며 외부의 키는 무시합니다.태그배열:

웹사이트에서 문서-'site_name' 선택
  어디에 문서 @ '"tags":["term":"paris", "term":"food"]';

예를 들어 다음과 같은 방법으로 동일한 작업을 수행할 수 있습니다.

웹사이트에서 문서-'site_name' 선택
  WHERE doc-'tags' @ '["term":"paris", "term":"food"]';

그러나 그 접근 방식은 유연성이 떨어지고 효율성도 떨어지는 경우가 많습니다.

반면에 토토 사이트 순위 존재 연산자는 중첩되지 않습니다. 토토 사이트 순위 값의 최상위 수준에서 지정된 키 또는 배열 요소만 찾습니다.

다양한 포함 및 존재 연산자는 기타 모든 토토 사이트 순위 연산자 및 함수와 함께 다음에 문서화되어 있습니다.섹션 9.16.

8.14.4. 토토 사이트 순위b인덱싱#

GIN 색인은 많은 수 내에서 발생하는 키 또는 키/값 쌍을 효율적으로 검색하는 데 사용할 수 있습니다.토토 사이트 순위b문서(데이텀). 두 진연산자 클래스다양한 성능과 유연성 절충안을 제공합니다.

다음에 대한 기본 GIN 연산자 클래스토토 사이트 순위bkey-exists 연산자를 사용한 쿼리 지원?, ?|그리고?&, 봉쇄 연산자@그리고토토 사이트 순위path일치 연산자@?그리고@@. (이러한 연산자가 구현하는 의미에 대한 자세한 내용은 다음을 참조하세요.표 9.48.) 이 연산자 클래스를 사용하여 인덱스를 생성하는 예는 다음과 같습니다.

GIN(jdoc)을 사용하여 API에서 idxgin 인덱스 생성;

기본이 아닌 GIN 연산자 클래스토토 사이트 순위b_path_ops키 존재 연산자를 지원하지 않지만 지원합니다.@, @?그리고@@. 이 연산자 클래스를 사용하여 인덱스를 생성하는 예는 다음과 같습니다.

GIN을 사용하여 API에서 idxginp 인덱스 생성(jdoc 토토 사이트 순위b_path_ops);

문서화된 스키마 정의와 함께 타사 웹 서비스에서 검색된 토토 사이트 순위 문서를 저장하는 테이블의 예를 생각해 보십시오. 일반적인 문서는 다음과 같습니다.

"guid": "9c36adc1-7fb5-4d5b-83b4-90356a46061a",
    "name": "안젤라 바튼",
    "is_active": 사실,
    "회사": "마그나폰",
    "주소": "178 Howard Place, Gulf, Washington, 702",
    "등록됨": "2009-11-07T08:53:22 +08:00",
    "위도": 19.793713,
    "경도": 86.513373,
    "태그": [
        "에님",
        "알리퀴프",
        "퀴"
    ]

우리는 이 문서를 이름이 지정된 테이블에 저장합니다.API, a토토 사이트 순위b열 이름jdoc. 이 열에 GIN 인덱스가 생성되면 다음과 같은 쿼리가 인덱스를 사용할 수 있습니다.

-- "회사" 키의 값이 "Magnafone"인 문서를 찾습니다.
SELECT jdoc-'guid', jdoc-'name' FROM api WHERE jdoc @ '"company": "Magnafone"';

그러나 다음과 같은 쿼리에는 색인을 사용할 수 없습니다. 왜냐하면 연산자가?인덱싱 가능하며 인덱싱된 열에 직접 적용되지 않습니다.jdoc:

-- 키 "tags"에 키 또는 배열 요소 "qui"가 포함된 문서를 찾습니다.
api에서 jdoc-'guid', jdoc-'name'을 선택하세요. jdoc - 'tags'는 어디입니까? 'qui';

그래도 표현식 인덱스를 적절하게 사용하면 위 쿼리에서 인덱스를 사용할 수 있습니다. 내의 특정 항목을 쿼리하는 경우"태그"키는 일반적이므로 이와 같은 색인을 정의하는 것이 좋습니다.

GIN을 사용하여 API에서 idxgintags 인덱스 생성((jdoc - 'tags'));

이제,어디에서jdoc - '태그' ? 'qui'인덱싱 가능한 연산자의 응용으로 인식됩니다?인덱싱된 표현식에jdoc - '태그'. (표현식 인덱스에 대한 자세한 내용은 다음에서 확인할 수 있습니다.PostgreSQL : 문서 : 17 : 11.7.와이즈 토토 대한 색인.)

질의에 대한 또 다른 접근 방식은 격리를 이용하는 것입니다. 예를 들면 다음과 같습니다.

-- "tags" 키에 배열 요소 "qui"가 포함된 문서를 찾습니다.
jdoc-'guid', jdoc-'name' FROM api WHERE jdoc @ '"tags": ["qui"]';

다음의 간단한 GIN 색인jdoc열은 이 쿼리를 지원할 수 있습니다. 그러나 이러한 인덱스는 모든 키와 값의 복사본을jdoc열, 이전 예의 표현식 인덱스는태그키. 단순 인덱스 접근 방식은 모든 키에 대한 쿼리를 지원하므로 훨씬 더 유연하지만 대상 표현식 인덱스는 단순 인덱스보다 검색 속도가 더 작고 빠릅니다.

GIN 색인은 또한 다음을 지원합니다.@?그리고@@수행하는 연산자토토 사이트 순위path일치. 예는 다음과 같습니다

API에서 jdoc-'guid', jdoc-'이름' 선택 jdoc @? '$.태그[*] ? (@ == "qui")';
Jdoc-'guid', jdoc-'name' FROM api WHERE jdoc @@ '$.tags[*] == "qui"';

이러한 연산자의 경우 GIN 색인은 다음 형식의 절을 추출합니다.accessors_chain == 상수밖으로토토 사이트 순위pathpattern을 사용하며 이 절에 언급된 키와 값을 기반으로 인덱스 검색을 수행합니다. 접근자 체인에는 다음이 포함될 수 있습니다.., [*][색인]접속자.토토 사이트 순위b_ops연산자 클래스도 지원합니다.*그리고.**접속자이지만토토 사이트 순위b_path_ops연산자 클래스는 그렇지 않습니다.

비록토토 사이트 순위b_path_ops연산자 클래스는 다음이 포함된 쿼리만 지원합니다.@, @?그리고@@연산자, 기본 연산자 클래스에 비해 눈에 띄는 성능 이점이 있습니다.토토 사이트 순위b_ops. 갑토토 사이트 순위b_path_ops색인은 일반적으로 a보다 훨씬 작습니다.토토 사이트 순위b_ops동일한 데이터에 대한 색인을 생성하며 특히 쿼리에 데이터에 자주 나타나는 키가 포함된 경우 검색의 특이성이 더 좋습니다. 따라서 검색 작업은 일반적으로 기본 연산자 클래스보다 더 나은 성능을 발휘합니다.

a 사이의 기술적 차이토토 사이트 순위b_ops그리고토토 사이트 순위b_path_opsGIN 인덱스는 전자는 데이터의 각 키와 값에 대해 독립적인 인덱스 항목을 생성하는 반면, 후자는 데이터의 각 값에 대해서만 인덱스 항목을 생성하는 것입니다.[7]기본적으로 각토토 사이트 순위b_path_ops색인 항목은 값과 그 값으로 이어지는 키의 해시입니다. 예를 들어 색인을 생성합니다"foo": "bar": "baz", 세 가지 모두를 통합하는 단일 색인 항목이 생성됩니다.foo, 바즈해시 값에 넣습니다. 따라서 이 구조를 찾는 포함 쿼리는 매우 구체적인 인덱스 검색을 초래합니다. 하지만 여부를 알 수 있는 방법은 전혀 없습니다foo키로 나타납니다. 반면에, 가토토 사이트 순위b_ops색인은 다음을 나타내는 세 개의 색인 항목을 생성합니다.foo, 바즈별도로; 그런 다음 포함 쿼리를 수행하기 위해 이러한 세 가지 항목이 모두 포함된 행을 찾습니다. GIN 인덱스는 이러한 AND 검색을 상당히 효율적으로 수행할 수 있지만 여전히 동등한 검색보다 덜 구체적이고 느립니다.토토 사이트 순위b_path_ops검색, 특히 세 개의 색인 항목 중 하나를 포함하는 매우 많은 수의 행이 있는 경우.

의 단점토토 사이트 순위b_path_ops접근 방식은 다음과 같은 값을 포함하지 않는 토토 사이트 순위 구조에 대한 색인 항목을 생성하지 않는다는 것입니다."a":. 이러한 구조를 포함하는 문서 검색을 요청하는 경우 전체 인덱스 스캔이 필요하며 이는 상당히 느립니다.토토 사이트 순위b_path_ops따라서 이러한 검색을 자주 수행하는 애플리케이션에는 적합하지 않습니다.

토토 사이트 순위b또한 지원합니다브트리그리고해시색인. 이는 일반적으로 전체 토토 사이트 순위 문서의 동등성을 확인하는 것이 중요한 경우에만 유용합니다.브트리주문토토 사이트 순위bdatums는 별로 관심이 없지만 완전성을 위해 다음과 같습니다.

개체  배열  부울  번호  문자열  

n쌍을 가진 객체  n - 1 쌍의 객체

n개 요소가 있는 배열  n - 1개 요소가 있는 배열

단, (역사적인 이유로) 빈 최상위 배열은 다음보다 작게 정렬됩니다.. 동일한 수의 쌍을 가진 객체는 다음 순서로 비교됩니다.

key-1, 값-1, 키-2 ...

객체 키는 저장 순서에 따라 비교됩니다. 특히 짧은 키가 긴 키보다 먼저 저장되므로 다음과 같이 직관적이지 않은 결과가 발생할 수 있습니다.

"aa": 1, "c": 1  "b": 1, "d": 1

마찬가지로, 동일한 수의 요소를 가진 배열은 순서대로 비교됩니다:

element-1, 요소-2 ...

기본 토토 사이트 순위 값은 기본 토토 사이트 순위 값과 동일한 비교 규칙을 사용하여 비교됩니다.PostgreSQL데이터 유형. 문자열은 기본 데이터베이스 데이터 정렬을 사용하여 비교됩니다.

8.14.5. 토토 사이트 순위b구독 중#

토토 사이트 순위b데이터 유형은 요소를 추출하고 수정하는 배열 스타일 첨자 표현식을 지원합니다. 중첩된 값은 아래 첨자 표현식을 연결하여 표시할 수 있으며, 다음과 같은 규칙을 따릅니다.경로인수토토 사이트 순위b_set함수. 만약에토토 사이트 순위b값은 배열이고 숫자 첨자는 0에서 시작하며 음수는 배열의 마지막 요소부터 역방향으로 계산됩니다. 슬라이스 표현식은 지원되지 않습니다. 첨자 표현식의 결과는 항상 토토 사이트 순위b 데이터 유형입니다.

업데이트문은 아래 첨자를 사용할 수 있습니다.SET수정할 절토토 사이트 순위b값. 아래 첨자 경로는 존재하는 한 영향을 받는 모든 값에 대해 탐색 가능해야 합니다. 예를 들어, 경로는발['a']['b']['c']다음까지 횡단할 수 있습니다.c만일마다, 발['a']발['a']['b']객체입니다. 있다면발['a']또는발['a']['b']이 정의되지 않은 경우 빈 개체로 생성되고 필요에 따라 채워집니다. 그러나 만약 있다면자체 또는 중간 값 중 하나가 문자열, 숫자 또는 등의 비객체로 정의되었습니다.토토 사이트 순위b null, 순회를 진행할 수 없으므로 오류가 발생하고 트랜잭션이 중단되었습니다.

첨자 구문의 예:

-- 키로 객체 값 추출
SELECT ('"a": 1'::토토 사이트 순위b)['a'];

-- 키 경로별로 중첩된 객체 값을 추출합니다.
SELECT ('"a": "b": "c": 1'::토토 사이트 순위b)['a']['b']['c'];

-- 인덱스로 배열 요소 추출
SELECT ('[1, "2", null]'::토토 사이트 순위b)[1];

-- 키로 객체 값을 업데이트합니다. '1' 주변의 따옴표에 주목하세요.
-- 값도 토토 사이트 순위b 유형이어야 합니다.
UPDATE table_name SET 토토 사이트 순위b_field['key'] = '1';

-- 레코드의 토토 사이트 순위b_field['a']['b']가 뭔가인 경우 오류가 발생합니다.
-- other than an object. 예를 들어, "a": 1 값에는 숫자 값이 있습니다.
-- of the key 'a'.
UPDATE table_name SET 토토 사이트 순위b_field['a']['b']['c'] = '1';

-- 첨자와 함께 WHERE 절을 사용하여 레코드를 필터링합니다. Since the result of
-- 첨자는 토토 사이트 순위b이므로 비교하는 값도 토토 사이트 순위b여야 합니다.
-- 큰따옴표로 인해 "value"도 유효한 토토 사이트 순위b 문자열이 됩니다.
SELECT * FROM table_name WHERE 토토 사이트 순위b_field['key'] = '"value"';

토토 사이트 순위b첨자를 통한 할당은 몇 가지 극단적인 경우를 다르게 처리합니다.토토 사이트 순위b_set. 소스인 경우토토 사이트 순위b값은NULL, 첨자를 통한 할당은 첨자 키가 암시하는 유형(객체 또는 배열)의 빈 토토 사이트 순위 값인 것처럼 진행됩니다.

-- 토토 사이트 순위b_field가 NULL이었던 곳은 이제 "a": 1입니다.

너무 적은 요소를 포함하는 배열에 대해 인덱스가 지정된 경우,NULL색인에 도달하고 값을 설정할 수 있을 때까지 요소가 추가됩니다.

-- 토토 사이트 순위b_field가 []였던 곳은 이제 [null, null, 2]입니다.
-- 토토 사이트 순위b_field가 [0]이었던 곳은 이제 [0, null, 2]입니다.
UPDATE table_name SET 토토 사이트 순위b_field[2] = '2';

A 토토 사이트 순위b값은 해당 첨자가 암시하는 대로 탐색할 마지막 기존 요소가 객체 또는 배열인 한 존재하지 않는 첨자 경로에 대한 할당을 허용합니다(경로에서 마지막 첨자로 표시된 요소는 탐색되지 않으며 무엇이든 될 수 있습니다). 중첩된 배열과 객체 구조가 생성되며, 전자의 경우-할당된 값을 배치할 수 있을 때까지 아래 첨자 경로에 지정된 대로 패딩됩니다.

-- 토토 사이트 순위b_field가 였던 곳은 이제 "a": ["b": 1]입니다.

8.14.6. 변환#

다음에 대한 변환을 구현하는 추가 확장을 사용할 수 있습니다.토토 사이트 순위b다른 절차적 언어에 대해 입력하세요.

PL/Perl용 확장이 호출됩니다.토토 사이트 순위b_plperl그리고토토 사이트 순위b_plperlu. 사용하신다면,토토 사이트 순위b값은 적절하게 Perl 배열, 해시 및 스칼라에 매핑됩니다.

PL/Python용 확장 프로그램이 호출됩니다.토토 사이트 순위b_plpython3u. If you use it,토토 사이트 순위b값은 적절하게 Python 사전, 목록 및 스칼라에 매핑됩니다.

이러한 확장 중,토토 사이트 순위b_plperl고려됩니다신뢰할 수 있는즉, 슈퍼유저가 아닌 사용자가 설치할 수 있습니다.생성현재 데이터베이스에 대한 권한. 나머지는 설치하려면 슈퍼유저 권한이 필요합니다.

8.14.7. 토토 사이트 순위path 유형#

토토 사이트 순위pathtype은 SQL/토토 사이트 순위 경로 언어에 대한 지원을 구현합니다.PostgreSQL토토 사이트 순위 데이터를 효율적으로 쿼리합니다. 이는 SQL/토토 사이트 순위 쿼리 함수를 사용한 추가 처리를 위해 토토 사이트 순위 데이터에서 경로 엔진이 검색할 항목을 지정하는 구문 분석된 SQL/토토 사이트 순위 경로 표현식의 이진 표현을 제공합니다.

SQL/토토 사이트 순위 경로 조건자와 연산자의 의미는 일반적으로 SQL을 따릅니다. 동시에 토토 사이트 순위 데이터로 작업하는 자연스러운 방법을 제공하기 위해 SQL/토토 사이트 순위 경로 구문은 몇 가지 JavaScript 규칙을 사용합니다.

  • 점 (.)는 회원 액세스에 사용됩니다.

  • 대괄호([])는 배열 액세스에 사용됩니다.

  • SQL/토토 사이트 순위 배열은 1부터 시작하는 일반 SQL 배열과 달리 0을 기준으로 합니다.

SQL/토토 사이트 순위 경로 표현식의 숫자 리터럴은 JavaScript 규칙을 따르며 이는 몇 가지 사소한 세부 사항에서 SQL 및 토토 사이트 순위과 다릅니다. 예를 들어 SQL/토토 사이트 순위 경로는 다음을 허용합니다..1그리고1., 토토 사이트 순위에서는 유효하지 않습니다. 십진수가 아닌 정수 리터럴과 밑줄 구분 기호가 지원됩니다. 예를 들면 다음과 같습니다.1_000_000, 0x1EEE_FFFF, 0o273, 0b100101. SQL/토토 사이트 순위 경로(JavaScript에서는 SQL이 아니지만)에서는 기수 접두사 바로 뒤에 밑줄 구분 기호가 있어서는 안 됩니다.

SQL/토토 사이트 순위 경로 표현식은 일반적으로 SQL 쿼리에서 SQL 문자열 리터럴로 작성되므로 작은따옴표로 묶어야 하며 값 내에서 원하는 작은따옴표를 두 배로 늘려야 합니다(참조섹션 4.1.2.1). 일부 경로 표현식에는 문자열 리터럴이 필요합니다. 이러한 포함된 문자열 리터럴은 JavaScript/ECMAScript 규칙을 따릅니다. 즉, 큰따옴표로 묶어야 하며, 입력하기 어려운 문자를 나타내기 위해 그 안에 백슬래시 이스케이프를 사용할 수 있습니다. 특히, 포함된 문자열 리터럴 내에 큰따옴표를 작성하는 방법은 다음과 같습니다.\", 백슬래시 자체를 작성하려면 다음과 같이 작성해야 합니다.\\. 기타 특수 백슬래시 시퀀스에는 JavaScript 문자열에서 인식되는 시퀀스가 포함됩니다.\b, \f, \n, \r, \t, \v다양한 ASCII 제어 문자의 경우,\xNN2개의 16진수로만 작성된 문자 코드의 경우,\uNNNN4자리 16진수 코드 포인트로 식별되는 유니코드 문자의 경우, 그리고\uN...}1~6개의 16진수로 작성된 유니코드 문자 코드 포인트의 경우.

경로 표현은 다음 중 하나일 수 있는 일련의 경로 요소로 구성됩니다:

  • 토토 사이트 순위 기본 유형의 경로 리터럴: 유니코드 텍스트, 숫자, true, false 또는 null.

  • 다음에 나열된 경로 변수표 8.24.

  • 다음에 나열된 접근자 연산자표 8.25.

  • 토토 사이트 순위path다음에 나열된 연산자 및 메소드섹션 9.16.2.3.

  • 필터 표현식을 제공하거나 경로 평가 순서를 정의하는 데 사용할 수 있는 괄호.

사용에 대한 자세한 내용은토토 사이트 순위pathSQL/토토 사이트 순위 쿼리 함수가 포함된 표현식, 참조섹션 9.16.2.

표 8.24. 토토 사이트 순위path변수

변수 설명
$ 쿼리되는 토토 사이트 순위 값을 나타내는 변수(컨텍스트 항목).
$varname 이름이 지정된 변수. 해당 값은 매개변수로 설정할 수 있습니다.vars여러 토토 사이트 순위 처리 함수; 참조표 9.51자세한 내용은.
@ 필터 표현식의 경로 평가 결과를 나타내는 변수.

표 8.25. 토토 사이트 순위path접속자

접속자 연산자 설명

.

."$varname"

지정된 키가 있는 개체 구성원을 반환하는 구성원 접근자. 키 이름이 다음으로 시작하는 명명된 변수와 일치하는 경우$또는 식별자에 대한 JavaScript 규칙을 충족하지 않는 경우 문자열 리터럴로 만들려면 큰따옴표로 묶어야 합니다.

.*

현재 개체의 최상위 수준에 있는 모든 구성원의 값을 반환하는 와일드카드 구성원 접근자.

.**

현재 객체의 토토 사이트 순위 계층 구조의 모든 수준을 처리하고 중첩 수준에 관계없이 모든 구성원 값을 반환하는 재귀 와일드카드 구성원 접근자입니다. 이것은PostgreSQLSQL/토토 사이트 순위 표준의 확장입니다.

.**{레벨}

.**{시작_레벨end_level}

좋아요.**, 그러나 토토 사이트 순위 계층 구조의 지정된 수준만 선택합니다. 중첩 수준은 정수로 지정됩니다. 레벨 0은 현재 개체에 해당합니다. 가장 낮은 중첩 수준에 액세스하려면마지막키워드. 이것은PostgreSQLSQL/토토 사이트 순위 표준의 확장입니다.

[아래첨자, ...]

배열 요소 접근자.아래첨자두 가지 형식으로 제공될 수 있습니다:색인또는시작_색인end_index. 첫 번째 형식은 인덱스별로 단일 배열 요소를 반환합니다. 두 번째 형식은 제공된에 해당하는 요소를 포함하여 인덱스 범위별로 배열 조각을 반환합니다.시작_색인그리고end_index.

지정된색인은 정수일 수도 있고 자동으로 정수로 변환되는 단일 숫자 값을 반환하는 표현식일 수도 있습니다. 인덱스 0은 첫 번째 배열 요소에 해당합니다. 다음을 사용할 수도 있습니다.마지막마지막 배열 요소를 나타내는 키워드로, 길이를 알 수 없는 배열을 처리하는 데 유용합니다.

[*]

모든 배열 요소를 반환하는 와일드카드 배열 요소 접근자.




[7]이 목적을 위해 용어에는 배열 요소가 포함되어 있지만 토토 사이트 순위 용어에서는 때때로 배열 요소를 객체 내의 값과 구별되는 것으로 간주합니다.

수정사항 제출

문서에 올바르지 않은 내용이 있으면 일치하지 않습니다. 특정 기능에 대한 경험이 있거나 추가 설명이 필요한 경우 이용해주세요이 양식문서 문제를 보고합니다.