| PostgreSQL 9.0.23 문서 | ||||
|---|---|---|---|---|
| 이전 | 위로 | 51장. 토토 캔 액세스 방법 인터페이스 정의 | PostgreSQL : 문서 : 9.0 : 와이즈 토토 와이즈 토토 방법 함수 | |
각 색인 액세스 방법은 다음 행으로 설명됩니다.pg_am시스템 카탈로그(참조섹션 45.3). 주요 내용은 에pg_am행은 다음을 참조합니다.pg_proc색인을 식별하는 항목 액세스 메소드에 의해 제공되는 액세스 함수. API 이러한 함수는 이 장의 뒷부분에서 정의됩니다. 또한,pg_am행은 몇 가지 고정된 항목을 지정합니다. 지원 여부와 같은 액세스 방법의 속성 다중 열 인덱스. 현재 특별한 지원은 없습니다. 생성 또는 삭제용pg_am항목; 새로운 액세스 방법을 작성할 수 있는 사람은 누구나 적절한 행을 삽입할 수 있어야 합니다.
유용하려면 색인 액세스 방법에는 다음 중 하나가 있어야 합니다. 더 많은운영자 가족그리고연산자 클래스다음에 정의됨pg_opfamily, pg_opclass, pg_amop, 그리고pg_amproc. 이 항목을 사용하면 계획자가 어떤 종류의 쿼리 제한을 사용할 수 있는지 결정 이 액세스 방법의 인덱스입니다. 운영자 제품군 및 클래스는 다음과 같습니다. 설명됨무지개 토토 PostgreSQL : 문서 : 9.0 : 인덱스에 대한 확장 프로그램입니다. 이 장을 읽기 위한 전제 자료입니다.
개별 색인은 다음에 의해 정의됩니다.pg_class물리적 관계로 설명하는 항목과 apg_index색인의 논리적 내용을 표시하는 항목, 즉 가지고 있는 인덱스 열 집합과 해당 열의 의미 연관된 연산자 클래스에 의해 캡처된 대로입니다. 인덱스 열 (키 값)은 기본 테이블의 단순 열일 수 있습니다. 또는 테이블 행에 대한 표현식입니다. 인덱스 액세스 방법 일반적으로 인덱스 키 값이 어디서 오는지 관심이 없습니다. (항상 미리 계산된 키 값이 전달됩니다) 그러나 매우 연산자 클래스 정보에 관심이 있습니다.pg_index. 이 두 카탈로그 항목은 모두 의 일부로 액세스됨관계데이터 토토 캔의 모든 작업에 전달되는 구조입니다.
일부 플래그 열pg_am명백하지 않은 의미가 있습니다. 요구 사항amcanunique다음에서 논의됩니다섹션 51.5.amcanmulticol플래그는 액세스가 메소드는 다중 열 인덱스를 지원하는 반면amOptionalkey스캔을 허용한다고 주장합니다. 첫 번째 항목에는 색인 생성 가능 제한 조항이 제공되지 않습니다. 토토 캔 열. 언제amcanmulticol이다 거짓,amOptionalkey본질적으로 액세스 방법이 없이 전체 인덱스 스캔을 허용하는지 여부를 나타냅니다. 모든 제한 조항. 다중을 지원하는 액세스 방법 인덱스 열반드시열의 일부 또는 전부에 대한 제한 사항을 생략하는 스캔 지원 첫 번째 이후; 그러나 그들은 일부를 요구하는 것이 허용됩니다 첫 번째 인덱스 열에 표시되는 제한 사항은 다음과 같습니다. 설정으로 표시됨amOptionalkey거짓.amindexnulls그렇다고 주장합니다 NULL 키 값에 대해 인덱스 항목이 생성됩니다. 대부분의 이후 인덱싱 가능한 연산자는 엄격하므로 다음에 대해 TRUE를 반환할 수 없습니다. NULL 입력, 인덱스를 저장하지 않는 것이 언뜻 보기에 매력적입니다. null 값에 대한 항목: 인덱스에서 반환할 수 없습니다. 어쨌든 스캔하세요. 그러나 인덱스 스캔이 다음과 같은 경우 이 인수는 실패합니다. 주어진 인덱스 열에 대한 제한 조항이 없습니다. 실제로는 이 이는 다음과 같은 인덱스를 의미합니다.amOptionalkeytrue는 null을 색인화해야 합니다. 플래너는 스캔 키가 없는 인덱스를 사용하기로 결정할 수도 있습니다. 모두. 관련 제한 사항은 인덱스 액세스 방법이 여러 인덱스 열을 지원합니다반드시인덱싱 null 값 지원 첫 번째 열 이후에는 플래너가 index는 이러한 열을 제한하지 않는 쿼리에 사용할 수 있습니다. 예를 들어 (a,b)에 대한 인덱스와어디에서 a = 4. 시스템은 다음을 가정합니다. 인덱스는 다음을 사용하여 행을 검색하는 데 사용할 수 있습니다.a = 4, 색인이 행을 생략하는 경우 잘못된 것입니다.b널입니다. 그러나 다음과 같은 행을 생략하는 것은 괜찮습니다. 첫 번째 인덱스 열이 null입니다. 따라서,amindexnulls다음의 경우에만 true로 설정되어야 합니다. 인덱스 액세스 방법은 임의의 행을 포함하여 모든 행을 인덱스합니다. null 값의 조합. 다음을 설정하는 인덱스 액세스 방법amindexnulls또한 설정할 수 있습니다amsearchnulls, 지원함을 나타냄NULL입니다그리고아님 NULL절을 검색 조건으로 사용합니다.