[고유 한] 젠 토토 만들기 [동시에]이름on테이블[사용메소드] (열| (표현) [opclass] [, ...]) [ 와 함께 (Storage_Parameter=value[, ...])] [테이블 스페이스테이블 스페이스] [ 어디술어]
젠 토토 생성젠 토토 구성index_name지정된 테이블. 인덱스는 주로 데이터베이스 성능을 향상시키는 데 사용됩니다 (부적절하게 사용하면 성능이 느려질 수 있지만).
인덱스의 키 필드는 열 이름으로 지정됩니다. 또는 괄호로 작성된 표현으로. 다수의 인덱스 메소드가 멀티 컬럼을 지원하는 경우 필드를 지정할 수 있습니다. 인덱스.
인덱스 필드는 값에서 계산 된 표현식 일 수 있습니다. 테이블 행의 하나 이상의 열 중. 이 기능을 사용할 수 있습니다 일부 변환을 기반으로 데이터에 대한 빠른 액세스를 얻으려면 기본 데이터. 예를 들어, 계산 된 색인어퍼 (col)조항을 허용합니다여기서 상단 (col) = 'Jim'인덱스 사용.
PostgreSQL인덱스를 제공합니다 방법 B- 트리, 해시, 요트 및 진. 사용자는 또한 자신을 정의 할 수 있습니다 자체 젠 토토 방법이지만 상당히 복잡합니다.
언제여기서조항이 있습니다.부분 젠 토토생성되었습니다. 부분 색인은 테이블, 일반적으로 인덱싱에 더 유용한 부분 테이블의 나머지. 예를 들어, 테이블이있는 경우 실금되지 않은 곳에 청구되지 않은 명령과 채워지지 않은 주문이 모두 포함됩니다 주문은 총 테이블의 작은 부분을 차지하지만 자주 사용되는 섹션이므로 생성하여 성능을 향상시킬 수 있습니다. 그 부분에 대한 색인. 또 다른 가능한 응용 프로그램입니다 사용여기서with고유 한a의 하위 집합에 대한 독창성을 시행합니다 테이블. 보다PostgreSQL : 문서 : 8.2 : 부분 토토 핫더 많은 토론.
에 사용 된 표현식여기서조항은 기본 테이블의 열만 참조 할 수 있지만 색인화 된 열뿐만 아니라 모든 열을 사용할 수 있습니다. 현재, 하위 쿼리 및 집계 표현은 또한 금지되어 있습니다.여기서. 동일한 제한이 적용됩니다 표현식 인 색인 필드.
젠 토토 정의에 사용되는 모든 기능 및 연산자 BE"불변", 즉 결과 그들의 주장에만 의존해야하며 결코 외부에 의존해야합니다. 영향 (예 : 다른 테이블의 내용 또는 현재 시간). 이 제한은 지수의 동작이 잘 정의되었습니다. 인덱스에서 사용자 정의 함수를 사용합니다 표현 또는여기서절, 기억하십시오 만들 때 불변의 기능을 표시하십시오.
시스템이 테이블 인덱스가 생성 된 경우 (데이터가 이미 존재하는 경우) 데이터가 추가 될 때마다. 데이터를 삽입하거나 업데이트하려고 시도합니다 이로 인해 중복 항목이 생성됩니다 오류.
이 옵션이 사용될 때PostgreSQL인덱스를 구축합니다 동시 인서트를 방지하는 잠금 장치를 사용하지 않고 테이블에서 업데이트 또는 삭제; 표준 색인 빌드 잠금 장치는 테이블에 쓰기 (읽지 않음)까지 끝났습니다. 언제 알아야 할 경고가 있습니다 이 옵션 사용 - 참조건물 동시에 색인.
생성 할 인덱스의 이름. 스키마 이름은 없습니다 여기에 포함됩니다. 인덱스는 항상 동일하게 생성됩니다 부모 테이블로서의 스키마.
테이블의 이름 (schema-qualified) 색인.
사용할 인덱스 메소드의 이름. 선택은btree, Hash, gist및gin. 기본 메소드는입니다.btree.
테이블 열의 이름.
테이블의 하나 이상의 열을 기반으로 한 표현. 표현은 일반적으로 주변과 함께 작성되어야합니다 구문에 표시된대로 괄호. 그러나, 표현식에 형식이 있으면 괄호가 생략 될 수 있습니다. 함수 호출의.
운영자 클래스의 이름. 아래를 참조하십시오 세부.
인덱스 메드-특이 적 스토리지 매개 변수의 이름. 자세한 내용은 아래를 참조하십시오.
인덱스를 생성하는 테이블 스페이스. 그렇지 않다면 지정,default_tablespace또는 데이터베이스의 기본 테이블 스페이스 ifdefault_tablespace빈 문자열입니다.
부분 젠 토토에 대한 제약 조건 표현.
thewith조항을 지정할 수 있습니다스토리지 매개 변수인덱스. 각 인덱스 방법은 자체 허용 스토리지 세트를 가질 수 있습니다. 매개 변수. 내장 인덱스 메소드는 모두 단일을 허용합니다 매개 변수 :
인덱스의 필수는 그 백분율입니다 인덱스 메소드가 포장을 시도하는 방법을 결정합니다. 색인 페이지. B- 트리의 경우 잎 페이지가 채워집니다 초기 인덱스 빌드 중 백분율 및시기 오른쪽에서 인덱스를 확장합니다 (가장 큰 키 값). 만약에 그 후 페이지는 완전히 가득 차면 가능합니다 분할, 지수의 점진적인 저하로 이어집니다 능률. B- 트리는 90의 기본 FillFactor를 사용하지만 10에서 100까지의 값을 선택할 수 있습니다. 테이블이 있다면 정적 다음 FillFactor 100은 최소화하는 것이 가장 좋습니다 인덱스의 물리적 크기이지만 심하게 업데이트 된 테이블 a 더 작은 FillFactor는 필요를 최소화하는 것이 좋습니다 페이지 분할. 다른 인덱스 방법은 FillFactor를 사용합니다 다르지만 대략 유사한 방법; 기본값 FillFactor는 메소드마다 다릅니다.
젠 토토 생성은 정기적 인 작동을 방해 할 수 있습니다. 데이터 베이스. 보통PostgreSQL쓰기에 대해 색인화 할 테이블을 잠그고 수행합니다. 테이블의 단일 스캔으로 전체 인덱스 빌드. 다른 거래는 여전히 테이블을 읽을 수 있지만 테이블에있는 행에 행을 삽입, 업데이트 또는 삭제합니다. 인덱스 빌드가 완료 될 때까지. 이것은 심각 할 수 있습니다 효과 시스템이 라이브 프로덕션 데이터베이스 인 경우. 크기가 큰 테이블은 색인을 유지하는 데 많은 시간이 걸릴 수 있으며, 심지어는 더 작은 경우에도 테이블, 인덱스 빌드는 기간 동안 작가를 잠글 수 있습니다. 생산 시스템에는 허용되지 않습니다.
PostgreSQL지원 잠그지 않고 인덱스를 구축합니다. 이 방법은입니다 지정하여 호출동시에옵션젠 토토 생성. 이렇게하면 옵션이 사용됩니다.PostgreSQL테이블의 두 스캔을 수행해야합니다. 모든 기존 거래가 종료 될 때까지 기다리십시오. 따라서 이것은 방법에는 표준 색인 빌드보다 더 많은 총 작업이 필요하며 완료하는 데 훨씬 더 오래 걸립니다. 그러나 그 이후로 인덱스가 구축되는 동안 일반 작업이 계속 될 수 있습니다. 이 방법은 생산에 새로운 인덱스를 추가하는 데 유용합니다. 환경. 물론, 추가 CPU 및 I/O 부하가 젠 토토 생성은 다른 작업 속도를 늦출 수 있습니다.
테이블의 두 번째 스캔 중에 문제가 발생하면 고유 한 지수의 독창성 위반과 같은젠 토토 생성명령은 실패하지만 뒤에 남겨주세요"무효"젠 토토. 이 젠 토토은 쿼리 목적으로 무시됩니다. 불완전합니다. 그러나 여전히 업데이트 오버 헤드를 소비합니다. 그러한 경우 권장 복구 방법은 젠 토토 및 다시 수행하려고젠 토토 생성 동시에. (또 다른 가능성은 지수를 재건하는 것입니다 와 함께Reindex. 그러나 이후로Reindex동시를 지원하지 않습니다 빌드,이 옵션은 매력적이지 않을 것 같지 않습니다.)
고유 한 지수를 구축 할 때의 또 다른 경고는 동시에입니다 독창성 제약이 이미 시행되고 있습니다 두 번째 테이블 스캔이 시작될 때 다른 거래에 대해. 이는 제약 조건 위반이보고 될 수 있음을 의미합니다 인덱스가 사용 가능하기 전에 다른 쿼리 인덱스 빌드가 결국 실패하는 경우에도. 또한 IF 두 번째 스캔에서 실패가 발생합니다."무효"젠 토토은 계속 시행됩니다 나중에 독창성 제약.
동시 표현 인덱스 및 부분 젠 토토의 동시 빌드 지원됩니다. 이들의 평가에서 발생하는 오류 표현은 설명 된 것과 비슷한 행동을 유발할 수 있습니다 고유 한 제약 조건 위반을 위해 위.
일반 색인 빌드는 다른 일반 색인을 구축 할 수 있습니다 동일한 테이블이 병렬로 발생하지만 동시 하나만 발생합니다. 인덱스 빌드는 한 번에 테이블에서 발생할 수 있습니다. 두 경우 모두, 아니요 테이블의 다른 유형의 스키마 수정이 허용됩니다. 그 동안에. 또 다른 차이점은 정기적 인 것입니다젠 토토 생성명령을 a 거래 블록이지만젠 토토 생성 동시에할 수 없습니다.
참조토토 결과 : 문서 : 8.2 : 색인정보 인덱스를 사용할 수있는시기, 사용하지 않을 때 및 그들이 유용 할 수있는 특정 상황.
현재 B-Tree 및 Gist Index 메서드 만 지원합니다 멀티 컬럼 인덱스. 기본적으로 최대 32 개의 필드를 지정할 수 있습니다. (이 한도는 빌드시 변경 될 수 있습니다PostgreSQL.) B-Tree 만 현재 지원합니다 독특한 젠 토토.
an운영자 클래스지정할 수 있습니다 인덱스의 각 열에 대해. 운영자 클래스는 다음을 식별합니다 해당 열에 대한 인덱스에서 사용할 연산자. 예를 들어, a 4 바이트 정수의 B-Tree Index는를 사용합니다.int4_ops클래스; 이 운영자 클래스에는 포함됩니다 4 바이트 정수의 비교 기능. 실제로 열의 데이터 유형의 기본 연산자 클래스는 일반적으로 충분한. 운영자 클래스를 갖는 주요 요점은 일부 데이터 유형은 둘 이상의 의미있는 것이있을 수 있습니다. 주문. 예를 들어, 복잡한 수를 정렬 할 수 있습니다 절대 값 또는 실제 부분 별 데이터 유형. 우리는 할 수 있습니다 데이터 유형에 대한 두 개의 운영자 클래스를 정의 한 다음 인덱스를 만들 때 적절한 클래스를 선택합니다. 더 많은 정보 운영자 수업에 대해섹션 11.8and in섹션 33.14.
use배트맨 토토 : 문서 : 8.2 : Drop Indexto 젠 토토 제거.
인덱스가 사용되지 않습니다is null기본적으로 조항. 그러한 경우 인덱스를 사용하는 가장 좋은 방법은 AN을 사용하여 부분 젠 토토을 작성하려면is 널술어.
사전 릴리스PostgreSQLr-tree 인덱스 방법이있었습니다. 이 방법이 제거되었습니다 요점에 비해 큰 장점이 없었기 때문입니다. 만약에RTREE 사용지정되어 있습니다.젠 토토 생성GIST 사용, 오래된 전환을 단순화하기 위해 GIST에 대한 데이터베이스.
열에서 b- 트리 젠 토토 생성제목표에서영화:
필름에 고유 한 색인 제목 _idx 만들기 (제목);
표현식에 대한 젠 토토 생성하단 (제목), 효율적인 사례 감수성을 허용합니다 검색 :
필름에서 index lower_title_idx 만들기 ((lower (title));
비 분리 채우기 요소가있는 인덱스를 생성하려면 :
(filmfactor = 70);
열에서 젠 토토을 생성하려면코드표에서영화그리고 색인이 있습니다 테이블 스페이스에 거주indexspace:
필름에서 인덱스 Code_Idx 만들기 (코드) TableSpace indexspace;
잠금하지 않고 인덱스를 작성하려면 테이블:
sales_table (수량)에서 동시에 sales_quantity_index 생성 동시에 sales_quantity_index 생성;