색인 정의는 다음을 지정할 수 있습니다.윈 토토 클래스색인의 각 열에 대해.
색인 생성이름ON테이블 (열 opclass [정렬 옵션] [, ...]);
윈 토토 클래스는 다음에서 사용할 연산자를 식별합니다. 해당 열의 인덱스입니다. 예를 들어 유형에 대한 B-트리 인덱스입니다.int4다음을 사용하겠습니다int4_ops클래스; 이 윈 토토 클래스에는 다음이 포함됩니다. 유형 값에 대한 비교 함수int4. 실제로는 기본 윈 토토 클래스 일반적으로 열의 데이터 유형이면 충분합니다. 주된 이유는 윈 토토 클래스가 있다는 것은 일부 데이터 유형의 경우 의미 있는 인덱스 동작이 두 개 이상이어야 합니다. 예를 들어, 절대값을 기준으로 복소수 데이터 유형을 정렬하고 싶습니다. 또는 실제 부분으로. 두 개의 연산자를 정의하여 이를 수행할 수 있습니다. 데이터 유형에 맞는 클래스를 선택한 다음 적절한 클래스를 선택합니다. 인덱스를 만들 때 윈 토토 클래스는 기본을 결정합니다. 정렬 순서(정렬 옵션을 추가하여 수정할 수 있음)콜레이트, ASC/설명및/또는NULL이 먼저임/NULL 마지막).
또한 내장된 윈 토토 클래스가 있습니다. 기본 것:
윈 토토 클래스text_pattern_ops, varchar_pattern_ops및bpchar_pattern_ops다음에서 B-트리 인덱스 지원 유형텍스트, varchar및문자각각. 기본 연산자와의 차이점 클래스는 값이 문자별로 엄격하게 비교된다는 것입니다. 로케일별 기준이 아닌 문자 대조 규칙. 이는 이러한 윈 토토 클래스를 적합하게 만듭니다. 패턴 일치 표현식과 관련된 쿼리에 사용 (좋아요또는 POSIX 정규 표현식) 데이터베이스가 표준을 사용하지 않는 경우"ㄷ"로케일. 예를 들어 다음과 같이 색인을 생성할 수 있습니다.varchar다음과 같은 열:
CREATE INDEX test_index ON test_table (col varchar_pattern_ops);
또한 기본값으로 색인을 생성해야 함을 참고하세요 일반적인 쿼리를 원하는 경우 윈 토토 클래스<, <=, , 또는=색인을 사용하여 비교합니다. 이러한 쿼리는xxx_pattern_ops윈 토토 클래스. (일반적인 동등 비교에서는 다음 연산자를 사용할 수 있습니다. 단, 클래스는 제외됩니다.) 여러 인덱스를 생성하는 것이 가능합니다. 다른 윈 토토 클래스가 있는 동일한 열에 있습니다. 만약 당신이 C 로케일을 사용하면 필요하지 않습니다.xxx_pattern_ops윈 토토 클래스, 기본 윈 토토 클래스가 있는 인덱스를 사용할 수 있기 때문입니다. C 로케일의 패턴 일치 쿼리의 경우.
다음 쿼리는 정의된 모든 윈 토토 클래스를 보여줍니다:
am.amname AS index_method 선택,
opc.opcname AS opclass_name
pg_am am, pg_opclass opc에서
여기서 opc.opcmethod = am.oid
ORDER BY index_method, opclass_name;
윈 토토 클래스는 실제로 더 큰 클래스의 하위 집합입니다. an이라는 구조운영자 계열. 에서 여러 데이터 유형이 유사한 동작을 갖는 경우 교차 데이터 유형 연산자를 정의하고 허용하는 데 자주 유용합니다. 이는 인덱스와 함께 작동합니다. 이를 위해 윈 토토 클래스 각 유형은 동일한 연산자 계열로 그룹화되어야 합니다. 교차 유형 연산자는 계열에 속하지만 가족 내 단일 클래스와 연결됩니다.
이 쿼리는 정의된 모든 윈 토토 계열과 모든 윈 토토를 보여줍니다. 각 계열에 포함된 윈 토토:
am.amname AS index_method 선택,
opf.opfname AS opfamily_name,
amop.amopopr::regoperator AS opfamily_operator
pg_am am, pg_opfamily opf, pg_amop amop에서
opf.opfmethod = am.oid AND
amop.amopfamily = opf.oid
ORDER BY index_method, opfamily_name, opfamily_operator;