색인 정의는 다음을 지정할 수 있습니다.연산자 클래스색인의 각 열에 대해.
색인 생성이름켜짐테이블 (열 opclass [, ...]);
연산자 클래스는 다음에서 사용할 연산자를 식별합니다. 해당 열의 인덱스입니다. 예를 들어 4바이트의 B-트리 인덱스는 정수는를 사용합니다.int4_ops클래스; 이 연산자 클래스에는 4바이트에 대한 비교 함수가 포함되어 있습니다. 정수. 실제로 열의 기본 연산자 클래스는 일반적으로 데이터 유형이면 충분합니다. 갖는 주요 포인트 연산자 클래스는 일부 데이터 유형의 경우 더 많은 것이 있을 수 있다는 것입니다. 하나의 의미있는 주문보다. 예를 들어, 정렬을 원할 수 있습니다. 절대값 또는 실수에 의한 복소수 데이터 유형 부분. 우리는 두 개의 연산자 클래스를 정의함으로써 이를 수행할 수 있습니다. 데이터 유형을 선택한 다음 적절한 클래스를 선택하여 색인. 특수한 연산자 클래스도 있습니다. 목적:
연산자 클래스box_ops그리고bigbox_ops둘 다 R-트리를 지원합니다 의 색인상자데이터 유형. 는 차이점은 다음과 같습니다.bigbox_ops상자 좌표를 아래로 조정합니다. 곱셈을 할 때 부동 소수점 예외를 피하세요. 매우 큰 부동 소수점에 대한 덧셈 및 뺄셈 좌표. 직사각형이 놓인 필드가 다음과 같은 경우 약 20,000제곱 단위 이상을 사용해야 합니다.bigbox_ops.
다음 쿼리는 정의된 모든 연산자 클래스를 보여줍니다.
am.amname AS acc_method 선택,
opc.opcname AS ops_name,
opr.oprname AS ops_comp
pg_am am, pg_opclass opc, pg_amop amop, pg_operator opr에서
opc.opcamid = am.oid AND
amop.amopclaid = opc.oid AND
amop.amopopr = opr.oid
ORDER BY acc_method, ops_name, ops_comp