색인 정의는 다음을 지정할 수 있습니다.토토 꽁 머니 클래스색인의 각 열에 대해.
색인 생성이름켜짐테이블(열opclass[ (opclass_options) ] [정렬 옵션] [, ...]);
토토 꽁 머니 클래스는 해당 열의 색인에서 사용할 연산자를 식별합니다. 예를 들어 유형에 대한 B-트리 인덱스입니다.int4다음을 사용하겠습니다int4_ops클래스; 이 토토 꽁 머니 클래스에는 유형의 값에 대한 비교 함수가 포함되어 있습니다.int4. 실제로는 일반적으로 열의 데이터 유형에 대한 기본 토토 꽁 머니 클래스로 충분합니다. 토토 꽁 머니 클래스를 갖는 주된 이유는 일부 데이터 유형의 경우 의미 있는 인덱스 동작이 두 개 이상 있을 수 있기 때문입니다. 예를 들어 복소수 데이터 유형을 절대값이나 실수부 기준으로 정렬하려고 할 수 있습니다. 데이터 유형에 대해 두 개의 토토 꽁 머니 클래스를 정의한 다음 인덱스를 만들 때 적절한 클래스를 선택하면 이를 수행할 수 있습니다. 토토 꽁 머니 클래스는 기본 정렬 순서를 결정합니다(이후 정렬 옵션을 추가하여 수정할 수 있음)콜레이트, ASC/설명및/또는NULL이 먼저임/NULL이 마지막임).
기본 토토 꽁 머니 클래스 외에 몇 가지 내장 토토 꽁 머니 클래스도 있습니다:
토토 꽁 머니 클래스text_pattern_ops, varchar_pattern_ops및bpchar_pattern_ops유형에 대한 B-트리 인덱스 지원텍스트, varchar및문자각각. 기본 토토 꽁 머니 클래스와의 차이점은 값이 로케일별 조합 규칙에 따르기보다는 문자별로 엄격하게 비교된다는 것입니다. 따라서 이러한 토토 꽁 머니 클래스는 패턴 일치 표현식과 관련된 쿼리에서 사용하기에 적합합니다(좋아요또는 POSIX 정규식) 데이터베이스가 표준을 사용하지 않는 경우“C”로케일. 예를 들어 다음과 같이 색인을 생성할 수 있습니다.varchar다음과 같은 열:
CREATE INDEX test_index ON test_table(col varchar_pattern_ops);
일반적인 쿼리를 원할 경우 기본 토토 꽁 머니 클래스를 사용하여 인덱스를 생성해야 함을 참고하세요<, <=, 또는=색인을 사용하여 비교합니다. 이러한 쿼리는토토 꽁 머니 클래스. (그러나 일반적인 동등 비교에서는 이러한 토토 꽁 머니 클래스를 사용할 수 있습니다.) 서로 다른 토토 꽁 머니 클래스를 사용하여 동일한 열에 여러 인덱스를 생성할 수 있습니다. C 로케일을 사용하는 경우에는 필요하지 않습니다.xxx_pattern_ops토토 꽁 머니 클래스(기본 토토 꽁 머니 클래스가 있는 인덱스는 C 로케일의 패턴 일치 쿼리에 사용할 수 있기 때문입니다.xxx_pattern_ops
다음 쿼리는 정의된 모든 토토 꽁 머니 클래스를 보여줍니다:
am.amname AS index_method 선택,
opc.opcname AS opclass_name,
opc.opcintype::regtype AS indexed_type,
opc.opcdefault AS is_default
pg_am am, pg_opclass opc에서
여기서 opc.opcmethod = am.oid
ORDER BY index_method, opclass_name;
토토 꽁 머니 클래스는 실제로 an이라고 불리는 더 큰 구조의 하위 집합입니다.토토 꽁 머니 계열. 여러 데이터 유형의 동작이 유사한 경우 교차 데이터 유형 연산자를 정의하고 이러한 연산자가 인덱스와 함께 작동하도록 허용하는 것이 유용한 경우가 많습니다. 이렇게 하려면 각 유형의 토토 꽁 머니 클래스를 동일한 토토 꽁 머니 계열로 그룹화해야 합니다. 교차 유형 연산자는 계열의 구성원이지만 계열 내의 단일 클래스와 연결되지 않습니다.
이전 쿼리의 확장된 버전은 각 토토 꽁 머니 클래스가 속한 토토 꽁 머니 계열을 보여줍니다.
am.amname AS index_method 선택,
opc.opcname AS opclass_name,
opf.opfname AS opfamily_name,
opc.opcintype::regtype AS indexed_type,
opc.opcdefault AS is_default
pg_am am, pg_opclass opc, pg_opfamily opf에서
여기서 opc.opcmethod = am.oid AND
opc.opcfamily = opf.oid
ORDER BY index_method, opclass_name;
이 쿼리는 정의된 모든 토토 꽁 머니 계열과 각 계열에 포함된 모든 연산자를 표시합니다.
SELECT 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;
psql명령 있음\dAc, \dAf및\dAo, 이러한 쿼리의 좀 더 정교한 버전을 제공합니다.
문서에 올바르지 않은 내용이 있으면 일치하지 않습니다. 특정 기능에 대한 경험이 있거나 추가 설명이 필요한 경우 이용해주세요이 양식문서 문제를 보고합니다.