이 문서는 지원되지 않는 버전의 PostgreSQL을위한 것입니다.
당신은에 대해 같은 페이지를 볼 수 있습니다사설 토토 PostgreSQL : 문서 : 17 : 색인 생성버전 또는 위에 나열된 다른 지원 버전 중 하나입니다.

배트맨 토토 색인

이름

색인 배트맨 토토-새 인덱스 정의

시놉시스

[고유 한] 색인 만들기 [동시에] [이름] ontable_name[사용메소드]
    (column_name| (표현) [CollateCollation] [opclass] [asc | desc] [nulls 첫 번째 | 마지막  ] [, ...] )
    [ 와 함께 (Storage_Parameter=value[, ...])]
    [테이블 스페이스TableSpace_name]
    [ 어디술어]

설명

색인 배트맨 토토지정된 관계의 지정된 열 (테이블이 될 수 있습니다. 또는 구체화 된 견해. 인덱스는 주로 향상에 사용됩니다 데이터베이스 성능 (부적절한 사용은 느리게 발생할 수 있습니다 성능).

인덱스의 키 필드는 열 이름으로 지정됩니다. 또는 괄호로 작성된 표현으로. 다수의 인덱스 메소드가 멀티 컬럼을 지원하는 경우 필드를 지정할 수 있습니다. 인덱스.

인덱스 필드는 값에서 계산 된 표현식 일 수 있습니다. 테이블 행의 하나 이상의 열. 이 기능은 사용될 수 있습니다 일부 변환에 따라 데이터에 대한 빠른 액세스를 얻습니다. 기본 데이터. 예를 들어, 계산 된 색인어퍼 (col)조항을 허용합니다여기서 상단 (col) = 'Jim'인덱스 사용.

postgresql인덱스를 제공합니다 방법 B- 트리, 해시, 요지, SP-Gist 및 진. 사용자는 또한 정의 할 수 있습니다 그들 자신의 색인 방법이지만 상당히 복잡합니다.

언제여기서조항이 있습니다.부분 색인생성되었습니다. 부분 색인 테이블의 일부에 대한 항목을 포함하는 색인입니다. 일반적으로 나머지 부분보다 인덱싱에 더 유용한 부분 테이블. 예를 들어, 두 가지를 포함하는 테이블이있는 경우 구금되지 않은 명령이 총 테이블의 작은 비율이지만 자주 사용됩니다. 섹션, JUST에서 인덱스를 만들어 성능을 향상시킬 수 있습니다. 그 부분. 또 다른 가능한 응용 프로그램은 사용하는 것입니다여기서with고유 한to 테이블의 하위 집합에 대한 독창성을 시행합니다. 보다섹션 11.8더 많은 토론을 위해.

여기서절 기본 테이블의 열만 참조 할 수 있지만 사용할 수 있습니다. 인덱스 된 모든 열만이 아닙니다. 현재, 하위 쿼리 그리고 집계 표현은 또한 금지되어 있습니다여기서. 인덱스 필드에는 동일한 제한이 적용됩니다 표현입니다.

인덱스 정의에 사용되는 모든 기능 및 연산자"불변", 즉, 결과가 필요합니다 그들의 주장에만 의존하고 결코 외부 영향에 의존하지 않습니다. (예 : 다른 테이블의 내용 또는 현재 시간). 이것 제한은 인덱스의 동작이 잘 정의되어 있는지 확인합니다. 인덱스 표현식에서 사용자 정의 함수를 사용하거나여기서절은 함수를 표시해야합니다 당신이 그것을 만들 때 불변.

매개 변수

고유 한

시스템이 테이블의 중복 값을 확인하게합니다. 인덱스가 배트맨 토토 될 때 (데이터가 이미 존재하는 경우) 매번 데이터가 추가됩니다. 결과를 삽입하거나 업데이트하려고 시도합니다 중복 항목에서 오류가 발생합니다.

동시에

이 옵션이 사용될 때PostgreSQL취하지 않고 인덱스를 구축합니다 동시 인서트, 업데이트 또는 삭제를 방지하는 모든 잠금 테이블; 표준 색인 빌드가 잠금되는 반면 (그러나 테이블에서 읽습니다. 몇 가지 경고가 있습니다 이 옵션을 사용할 때주의하십시오 - 참조건물 동시에 색인.

이름

생성 할 인덱스의 이름. 스키마 이름은 없습니다 여기에 포함; 인덱스는 항상 같은 스키마에서 생성됩니다. 부모 테이블. 이름이 생략되면PostgreSQL적절한 이름을 선택합니다 부모 테이블의 이름과 색인 된 열 이름.

table_name

테이블의 이름 (schema-qualified) 색인.

Method

사용할 인덱스 메소드의 이름. 선택은btree, Hash, gist, SPGISTand. 기본 메소드는입니다.btree.

column_name

테이블 열의 이름.

표현

테이블의 하나 이상의 열을 기반으로 한 표현. 그만큼 표현은 일반적으로 주변 괄호로 작성해야합니다 구문에 표시됩니다. 그러나 괄호는 생략 될 수 있습니다 표현식은 함수 호출의 형태가 있습니다.

Collation

인덱스에 사용할 수있는 콜레이션 이름. 기본적으로 인덱스는 열이 색인화되거나 표현식의 결과는 색인화됩니다. 인덱스 비 디폴트 콜라이트는 관련된 쿼리에 유용 할 수 있습니다 비 기본 콜라주를 사용한 표현식.

opclass

운영자 클래스의 이름. 자세한 내용은 아래를 참조하십시오.

ASC

오름차순 정렬 순서 (기본값)를 지정합니다.

desc

내림차순 정렬 순서를 지정합니다.

Nulls First

nulls 전에 널 정렬을 지정합니다. 이것은 기본값입니다 언제desc지정되어 있습니다.

널 마지막

널이 아닌 후에 널이 정렬되도록 지정합니다. 이것은 기본값입니다 언제desc지정되지 않았습니다.

Storage_Parameter

인덱스 메드-특정 스토리지 매개 변수의 이름. 보다색인 스토리지 매개 변수자세한 내용.

TableSpace_name

인덱스를 배트맨 토토하는 테이블 스페이스. 지정되지 않은 경우default_tablespace상담 또는temp_tablespaces임시 테이블의 인덱스 용

술어

부분 색인에 대한 제약 조건 표현.

인덱스 스토리지 매개 변수

선택 사항with조항을 지정합니다스토리지 매개 변수인덱스. 각 인덱스 방법에는 자체 허용 스토리지 매개 변수 세트가 있습니다. 그만큼 B-Tree, Hash, Gist 및 SP-Gist Index Methods는 모두 이것을 받아들입니다. 매개 변수 :

FillFactor

인덱스의 필계는 방법을 결정하는 백분율입니다. 전체 인덱스 메소드가 인덱스 페이지를 포장하려고합니다. B- 트리의 경우 잎 페이지는 초기 인덱스 동안이 백분율로 채워집니다. 구축 및 오른쪽에서 인덱스를 확장 할 때 (새 추가 가장 큰 핵심 값). 그 후 페이지가 완전히 가득 차면 그들은 분할되어 지수의 점진적인 저하로 이어질 것입니다. 능률. B- 트리는 90의 기본 FillFactor를 사용하지만 모든 정수 10에서 100까지의 값을 선택할 수 있습니다. 테이블이 정적 인 경우 FillFactor 100은 인덱스의 물리적 크기를 최소화하는 데 가장 적합하지만 심하게 업데이트 된 테이블의 경우 더 작은 FillFactor가 더 좋습니다. 페이지 분할 필요성을 최소화하십시오. 다른 색인 방법은 사용됩니다 다르지만 대략적으로 유사한 방식으로 FillFactor; 기본값 FillFactor는 메소드마다 다릅니다.

GIST 인덱스 추가 로이 매개 변수를 수락합니다.

버퍼링

|섹션 55.3.1지수를 구축하는 데 사용됩니다. 와 함께OFFon활성화되고auto그것은입니다 처음에는 비활성화되었지만 인덱스 크기가 한 번만 켜졌습니다. 도달exply_cache_size. 기본값은auto.

진 인덱스는 다른 매개 변수를 수락합니다 :

Fastupdate

이 설정은 빠른 업데이트 기술의 사용법을 제어합니다 설명섹션 57.3.1. 그것은 부울 매개 변수 :on빠르게 활성화합니다 업데이트,OFF비활성화합니다. (대안 철자onandOFF에 설명 된대로 허용섹션 18.1.) 기본값은입니다.on.

참고 :회전FastupdateOFF VIAAlter Index향후 삽입을 방지합니다 보류중인 인덱스 항목 목록으로 들어가지만 자체는 이전 항목을 플러시합니다. 당신은 원할 수도 있습니다진공나중에 보류중인 테이블 목록이 비워졌습니다.

동시에 빌드 인덱스

색인 배트맨 토토은 정기적 인 작동을 방해 할 수 있습니다. 데이터 베이스. 보통PostgreSQL쓰기에 대해 색인화 할 테이블을 잠그고 수행합니다. 테이블의 단일 스캔으로 전체 인덱스 빌드. 다른 트랜잭션은 여전히 ​​테이블을 읽을 수 있지만 삽입하려고하면 테이블의 업데이트 또는 삭제 인덱스가 될 때까지 차단됩니다. 빌드가 완료되었습니다. 시스템이 라이브 프로덕션 데이터베이스. 매우 큰 테이블에는 몇 시간이 걸릴 수 있습니다 색인화되고 작은 테이블의 경우 인덱스 빌드가 잠글 수 있습니다. 제작에 대해 허용 할 수없는 시대의 작가 체계.

PostgreSQL건물 지원 잠그지 않고 인덱스. 이 방법은 다음과 같이 호출됩니다 지정동시에옵션색인 배트맨 토토. 이 옵션이 사용될 때PostgreSQL두 스캔을 수행해야합니다 테이블의, 또한 기존의 모든 것을 기다려야합니다. 인덱스를 잠재적으로 수정하거나 사용할 수있는 트랜잭션 끝내다. 따라서이 방법은 a보다 더 많은 총 작업이 필요합니다 표준 인덱스 구축이 크게 만들어지고 완료하는 데 훨씬 더 오래 걸립니다. 그러나, 그것은 정상적인 작업이 계속 될 수있게하므로 인덱스가 구축 되었으며이 방법은 새로운 인덱스를 추가하는 데 유용합니다. 생산 환경. 물론 추가 CPU 및 I/O 부하 색인 배트맨 토토에 의해 부과되면 다른 작업이 느려질 수 있습니다.

동시 인덱스 빌드에서 인덱스는 실제로 입력됩니다. 시스템이 한 번의 트랜잭션으로 카탈로그 한 다음 두 개의 테이블 스캔이 발생합니다. 두 번의 거래에서. 각 테이블 스캔 전에 인덱스 빌드 테이블을 수정 한 기존 거래를 기다려야합니다. 끝내다. 두 번째 스캔 후 인덱스 빌드는 스냅 샷이있는 트랜잭션 (참조메이저 토토 사이트 : 문서 : 9.3 : 동시성 제어) 종료 할 두 번째 스캔을 포기합니다. 그런 다음 마침내 색인은 사용할 준비가 될 수 있으며색인 배트맨 토토명령이 종료됩니다. 그러나 그럼에도 불구하고 인덱스는 쿼리에 대해 즉시 사용할 수 없을 수 있습니다. 최악의 경우 사례, 거래가 존재하는 한 사용할 수 없습니다. 인덱스 빌드의 시작.

교착 상태와 같이 테이블을 스캔하는 동안 문제가 발생하는 경우 또는 고유 한 지수의 독창성 위반,색인 배트맨 토토명령은 실패하지만 뒤에 남겨 둡니다."무효"색인. 이 색인은 될 것입니다 불완전 할 수 있기 때문에 쿼리 목적으로 무시됩니다. 그러나 여전히 업데이트 오버 헤드를 소비합니다. 그만큼PSQL \ d명령 그런 지수를Invalid:

postgres =# \ d 탭
       "public.tab"테이블
 열 |  유형 | 수정 자 
--------+--------+-----------
 col | 정수 | 
인덱스 :
    "idx"btree (col) 잘못된

그러한 경우 권장 복구 방법은 색인 및 다시 수행하려고색인 배트맨 토토 동시에. (또 다른 가능성은 지수를 재건하는 것입니다 와 함께Reindex. 그러나 이후로reindex동시 빌드를 지원하지 않습니다 옵션은 매력적이지 않을 것 같지 않습니다.)

독특한 색인을 동시에 구축 할 때의 또 다른 경고는 고유성 제약은 이미 다른 사람에 대해 시행되고 있습니다 두 번째 테이블 스캔이 시작될 때의 거래. 이것은 그것을 의미합니다 제약 위반은 이전에 다른 쿼리에서보고 될 수 있습니다. 인덱스는 사용 가능하거나 심지어 인덱스 빌드는 결국 실패합니다. 또한 실패가 발생하는 경우 두 번째 스캔,"무효"색인 나중에 독창성 제약을 계속 집행하고 있습니다.

동시 표현식 인덱스 및 부분 인덱스의 동시 빌드입니다 지원. 이러한 표현의 평가에서 발생하는 오류 고유 한 것에 대해 위에서 설명한 것과 유사한 행동을 일으킬 수 있습니다. 제약 위반.

일반 색인 빌드는 다른 일반 색인 빌드가 동일한 테이블이 병렬로 발생하지만 동시 인덱스 하나만 발생합니다. 한 번에 테이블에서 빌드가 발생할 수 있습니다. 두 경우 모두 다른 유형은 없습니다 한편 테이블의 스키마 수정이 허용됩니다. 또 다른 차이점은 일반입니다.색인 배트맨 토토명령은 트랜잭션 블록 내에서 수행 할 수 있지만동시에 색인 배트맨 토토할 수 없습니다.

노트

참조토토 사이트 순위 : 문서 : 9.3 : 인덱스정보에 대한 정보 인덱스를 사용할 수있는 경우, 사용하지 않을 때 및 특정 상황이 유용 할 수 있습니다.

주의

해시 인덱스 작업은 현재 월경이 아니 었으므로 해시 인덱스는로 재건되어야 할 수도 있습니다.Reindex데이터베이스 충돌 후 기록되지 않은 변화. 또한 해시 인덱스 변경은 복제되지 않습니다 초기베이스 후 스트리밍 또는 파일 기반 복제 백업, 따라서 이후에 사용하는 쿼리에 대한 답변을 제공합니다. 그들을. 이러한 이유로 해시 인덱스 사용은 현재입니다 낙담.

현재, B-Tree, Gist 및 Gin Index Methods 지원 만 멀티 컬럼 인덱스. 기본적으로 최대 32 개의 필드를 지정할 수 있습니다. (이 한도는 빌드시 변경 될 수 있습니다PostgreSQL.) 현재 B-Tree 만 현재 지원합니다 독특한 색인.

an운영자 클래스인덱스의 각 열. 운영자 클래스는 다음을 식별합니다 해당 열에 대한 인덱스에서 사용할 연산자. 예를 들어, a 4 바이트 정수의 B-Tree Index는를 사용합니다.int4_ops클래스; 이 운영자 클래스에는 포함됩니다 4 바이트 정수의 비교 기능. 실제로 열의 데이터 유형의 기본 연산자 클래스는 일반적으로 충분한. 운영자 클래스를 갖는 주요 요점은 일부 데이터 유형은 하나 이상의 의미있는 순서가있을 수 있습니다. 예를 들어, 복잡한 수 데이터 유형을 정렬 할 수 있습니다. 절대 가치 또는 실제 부분에 의해. 우리는 이것을 할 수 있습니다 데이터 유형에 대해 두 개의 운영자 클래스를 정의한 다음 선택 색인을 만들 때 적절한 클래스. 자세한 내용 운영자 클래스가스포츠 토토 베트맨 : 문서 : 9.3 : 운영자 클래스 및 운영자 가족and in와이즈 토토 PostgreSQL : 문서 : 9.3 : 인덱스에 대한 인터페이스 확장.

순서 스캔을 지원하는 인덱스 방법의 경우 (현재, 만 B-Tree), 옵션 조항ASC, desc, 널 첫 번째및/또는널 마지막할 수 있습니다 인덱스의 정렬 순서를 수정하도록 지정됩니다. an 순서 인덱스는 앞뒤로 스캔 할 수 있습니다. 일반적으로 단일 열을 만드는 데 유용descindex - 정렬 주문이 이미 사용 가능합니다 일반 색인으로. 이러한 옵션의 가치는 그 것입니다 정렬 순서와 일치하는 멀티 컬럼 인덱스를 만들 수 있습니다. 와 같은 혼합 주문 쿼리에 의해 요청됨선택 ... X ASC, y desc 주문. 그만큼nulls지원 해야하는 경우 옵션이 유용합니다"Nulls Sort Low"행동이 아니라 행동 기본값"Nulls Sort High", in 정렬 단계를 피하기 위해 인덱스에 의존하는 쿼리.

대부분의 인덱스 방법의 경우 인덱스 생성 속도는 다음과 같습니다. 의 설정에 따라maintenance_work_mem. 더 큰 값은 인덱스 배트맨 토토에 필요한 시간을 줄일 것입니다. 기억의 양보다 크게 만들지 않는 한 사용 가능한 것은 기계를 스와핑으로 이끌어 낼 수 있습니다.

usePostgreSQL : 문서 : 9.3 : 사설 토토 사이트 Indexan 색인.

사전 릴리스PostgreSQLr-tree index 방법이있었습니다. 이 방법이 제거되었습니다 요점에 비해 큰 장점이 없었기 때문입니다. 만약에RTREE 사용지정되어 있습니다.색인 배트맨 토토그것을로 해석 할 것입니다.GIST 사용, 오래된 데이터베이스의 변환을 단순화하기 위해 gist에.

예제

열에서 b- 트리 색인 배트맨 토토29799_29806표에서영화:

필름에서 고유 한 색인 제목 _idx 만들기 (제목);

표현식에 대한 색인 배트맨 토토하위 (제목)검색 :

필름에서 색인 배트맨 토토 ((lower (title));

(이 예에서는 인덱스 이름을 생략하기로 선택했습니다. 시스템은 이름을 선택합니다. 일반적으로films_lower_idx.)

Default Collation이 아닌 인덱스 생성 :

영화에서 인덱스 제작 _idx_german 만들기 (Title Collate "de_de");

NULLS의 정렬 정렬 순서로 색인을 배트맨 토토하려면 :

영화에서 색인 배트맨 토토 _idx_nulls_low (Title Nulls First);

비 기본 채우기 요소가있는 인덱스를 배트맨 토토하려면 :

영화에서 고유 인덱스 타이틀 _idx (title)를 사용하여 (fillfactor = 70);

a색인으로 빠른 업데이트 비활성화 :

with (fastupdate = off);를 사용하여 gin (위치)을 사용하여 documents_table에서 index gin_idx 생성

열에서 인덱스를 배트맨 토토하려면코드표에서영화그리고 색인이 있습니다 테이블 스페이스에 거주indexspace:

필름에서 인덱스 Code_Idx 만들기 (코드) TableSpace indexspace;

포인트 속성에 GIST 인덱스를 만들려면 변환 결과에 대해 박스 연산자를 효율적으로 사용하십시오. 기능:

인덱스 PointLoc 배트맨 토토
    GIST를 사용하는 지점 (상자 (위치, 위치));
* From Points를 선택하십시오
    Where Box (위치, 위치) && '(0,0), (1,1)':: Box;

잠금하지 않고 인덱스를 작성하려면 테이블에 쓴다 :

sales_table (수량)에서 동시에 인덱스 생성 동시에 sales_quantity_index;

호환성

색인 배트맨 토토isPostgreSQL언어 확장. 아니요 SQL 표준의 색인 조항