표시된 바와 같이표 37.2, btree 사설 토토 클래스는 5개의 비교 사설 토토를 제공해야 합니다.<, <=, =, =그리고. 그렇게 예상할 수도 있겠네요<또한 사설 토토 클래스의 일부여야 하지만 그렇지 않습니다. 왜냐하면 a를 사용하는 것은 거의 유용하지 않기 때문입니다.<색인 검색의 WHERE 절. (일부 목적에 따라 기획자가 처리합니다.<btree 사설 토토 클래스와 연관됨; 하지만를 통해 해당 사설 토토를 찾습니다.=from이 아닌 사설 토토의 부정자 링크pg_amop.)
여러 데이터 유형이 거의 동일한 정렬 의미를 공유하는 경우 해당 연산자 클래스를 연산자 계열로 그룹화할 수 있습니다. 그렇게 하면 기획자가 유형 간 비교에 대해 추론을 할 수 있으므로 유리합니다. 계열 내의 각 연산자 클래스에는 입력 데이터 유형에 대한 단일 유형 연산자(및 관련 지원 함수)가 포함되어야 하며, 교차 유형 비교 연산자 및 지원 함수는 다음과 같습니다.“느슨한”가족에서. 교차 유형 사설 토토의 전체 세트가 패밀리에 포함되어 플래너가 전이성에서 추론한 모든 비교 조건을 나타낼 수 있도록 하는 것이 좋습니다.
btree 사설 토토 계열이 충족해야 하는 몇 가지 기본 가정이 있습니다:
안=사설 토토는 동등 관계여야 합니다. 즉, null이 아닌 모든 값에 대해A, B, C데이터 유형:
A = A참입니다 (반사법)
ifA = B그러면B = A (대칭법칙)
ifA = B그리고B = C그러면A = C (전이법)
A <사설 토토는 강력한 순서 관계여야 합니다. 즉, null이 아닌 모든 값에 대해A, B, C:
A < A거짓입니다(비반사적 법칙)
ifA < B그리고B < C그러면A < C (이행법)
또한 주문은 전체입니다. 즉, null이 아닌 모든 값에 대해A, B:
정확히 다음 중 하나A < B, A = B및B < A참입니다(삼분법법)
(물론 삼분법 법칙은 비교 지원 기능의 정의를 정당화합니다.)
다른 세 연산자는 다음과 같이 정의됩니다.=그리고<명백한 방식으로 행동해야 하며 그들과 일관되게 행동해야 합니다.
여러 데이터 유형을 지원하는 연산자 계열의 경우 위의 법칙은 다음과 같은 경우에 적용되어야 합니다.A, B, C은 계열의 모든 데이터 유형에서 가져옵니다. 전이법칙은 교차 유형 상황에서 두세 가지 다른 연산자의 동작이 일관적이라는 진술을 나타내기 때문에 보장하기 가장 까다롭습니다. 예를 들어 다음과 같이 입력하면 작동하지 않습니다.float8그리고숫자적어도 현재 의미론으로는 그렇지 않은 동일한 연산자 계열로숫자값은 다음으로 변환됩니다.float8a와 비교를 위해float8. 제한된 정확성으로 인해float8, 이는 별개의 항목이 있음을 의미합니다.숫자동일하게 비교될 값float8값이므로 추이법칙은 실패합니다.
다중 데이터 유형 계열에 대한 또 다른 요구 사항은 사설 토토 계열에 포함된 데이터 유형 간에 정의된 암시적 또는 이진 강제 변환이 관련 정렬 순서를 변경해서는 안 된다는 것입니다.
btree 인덱스가 이러한 법칙을 단일 데이터 유형 내에서 유지하도록 요구하는 이유는 매우 분명합니다. 이러한 법칙이 없으면 키를 정렬할 순서가 없습니다. 또한 다른 데이터 유형의 비교 키를 사용하는 인덱스 검색에서는 두 데이터 유형에 걸쳐 제대로 작동하려면 비교가 필요합니다. 패밀리 내의 세 개 이상의 데이터 유형에 대한 확장은 btree 인덱스 메커니즘 자체에서 엄격히 요구되지는 않지만 플래너는 최적화 목적으로 이를 사용합니다.