개발 버전 :Devel
지원되지 않는 버전 :12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0 / 8.4 / 8.3 / 8.2 / 8.1 / 8.0 / 7.4 / 7.3 / 7.2
이 문서는 지원되지 않는 버전의 PostgreSQL을위한 것입니다.
당신은에 대해 같은 페이지를 볼 수 있습니다PostgreSQL : 문서 : 17 : 36.15. 토토 꽁 머니 최적화 정보버전 또는 위에 나열된 다른 지원 버전 중 하나입니다.

35.13. 토토 결과 최적화

A postgresql토토 결과

추가 최적화 조항이 향후 추가 될 수 있습니다postgresql. 그들

35.13.1. Commutator

theCommutator조항, 제공되는 경우,<and특정 데이터 유형의 경우 일반적으로 각각입니다+IS-보통 아무것도 통근하지 않습니다.

통근 가능한 연산자의 왼쪽 피연산자 유형은 동일합니다.postgresql조회하려면 주어야합니다Commutator절.

통근자 정보를 제공하는 것이 중요합니다"Flip Around"필요한 양식에 대한 그러한 조항tab1.x = tab2.y,tab1.xandtab2.y는 사용자 정의 유형이며 가정합니다tab2.y색인이 표시됩니다. 최적화기tab2.y =, 인덱스 스캔 기계가 볼 것으로 예상되기 때문입니다postgresqlWillnot이것은 단순히 이것이 a라고 가정합니다=토토 결과는 유효하다고 지정해야합니다

자체 관리 연산자를 정의 할 때, 당신은 그냥

  • 한 가지 방법은를 생략하는 것입니다.Commutator첫 번째 연산자의 조항postgresqlCommutator첫 번째 조항

  • 더 간단한 방법은 단지 포함하는 것입니다Commutator둘 다의 조항postgresql첫 번째를 처리합니다Commutator존재하지 않는 연산자,postgresql이 시점에서 추론 할 수 있습니다.

35.13.2. 부정관

the부정관조항, 제공되는 경우,<and> =는 대부분의 데이터 유형에 대한 부정적인 쌍입니다. an

정류자와 달리 한 쌍의 외교 연산자가 유효하게 할 수 있습니다

토토 결과의 부정자는 동일한 왼쪽 및/또는 오른쪽을 가져야합니다.Commutator, 연산자 이름 만부정관절.

부정기 제공은 쿼리 최적화에 매우 도움이됩니다.not (x =단순화하려면x <>. 이것은 당신이 생각하는 것보다 더 자주 나타납니다.아님작업을 삽입 할 수 있습니다

동일하게 사용하여 정의 할 수 있습니다.

35.13.3. 제한

the제한조항, 제공되는 경우,제한조항은 만듭니다부울. 제한 선택성의 아이디어여기서-Clase 조건

컬럼 OP Constant

현재 연산자 및 특정 상수 값의 경우.여기서이 양식을 가진 조항. (상수가 발생하면 어떻게됩니까?Commutator

새로운 제한 선택성 추정 기능 작성은 다음과 같습니다

eqselfor=
neqselfor<
Scalarltselfor<또는<=
Scalargtselfor또는> =
이것들이=일반적으로 작은 만 허용됩니다<일반적으로 작은 것만 거부합니다<분수를 수락합니다분석<=약간 더 큰 분수를 받아 들일 것입니다<동일한 비교and> =.

당신은 자주 어느 쪽이든 사용으로 도망 갈 수 있습니다eqsel또는neqsel선택성이 매우 높거나 매우 낮은 연산자, 심지어eqsel일반적으로 그들이 할 것이라고 가정합니다

사용할 수 있습니다ScalarltselandScalargtsel비교convert_to_scalar ()insrc/backend/utils/adt/selfuncs.c. (결국,pg_type시스템 카탈로그; 그러나 그것은 그렇지 않았습니다

추가 선택성 추정 기능이 있습니다src/backend/utils/adt/geo_selfuncs.c: Areael, PositionselContsel. 이 글에서 이것은 단지입니다

35.13.4. Join

theJoin조항, 제공된 경우 이름Join조항은 이진에 대해서만 적합합니다부울. 아이디어여기서-양식의 클레스트 조건 :

표 1.column1 op table2.column2

현재 연산자의 경우. 와 마찬가지로제한절, 이것은 최적화에 도움이됩니다

이전과 같이,이 장은 방법을 설명하려고 시도하지 않을 것입니다.

eqjoinselfor=
neqjoinselfor<
scalarltjoinselfor<또는<=
Scalargtjoinselfor또는> =
Areajoinsel2d
PositionJoinsel용 2d
contjoinsel2d

35.13.5. 해시

the해시조항, 현재의 경우,해시이진 연산자에게만 적합합니다부울및 실제로

해시 조인의 기본 가정은 조인입니다해시일부를 나타내지 않는 연산자의 경우"평등"값은 값이 있지만 값입니다

표시 될해시, 가입

해시 기능을 준비 할 때주의를 기울여야합니다.Hash_any. (다른 사람을 쓰지 않는 한IEEE부동 소수점 표준, 음수 0

해시 합의 가능한 연산자는 정류자가 있어야합니다 (자체

참고 :해시에 의한 기본 기능

참고 :해시에 접을 수있는 연산자가있는 경우in토토 결과은 잘못된 결과를 생성 할 수 있습니다.in돌아올 수 있습니다

35.13.6. 병합

the병합현재의 경우 절,병합이진 연산자에게만 적합합니다부울및 실제로

병합 조인"같은 장소"정렬 순서로. 실제로 이것smallint-ersus-정수평등 연산자는 합병 가능합니다. 정렬 만 있으면됩니다

표시 될병합, 가입btree색인 토토 결과 패밀리. 이것은 아닙니다병합플래그는 플래너에게 힌트 역할을합니다

병합 합류 가능한 연산자는 정류자가 있어야합니다 (자체btree제공 할 여러 데이터 유형을 지원하는 토토 결과 제품군

참고 :병합 합류 가능한 기능