젠 토토 : 문서 : 9.6 : 젠 토토 | |||
---|---|---|---|
롤 토토 : 문서 : 9.6 : 그룹 만들기 | 토토 사이트 순위 PostgreSQL : 문서 : 9.6 : SQL 명령 | PostgreSQL : 문서 : 9.6 : 토토 꽁 머니 생성 |
[고유 한] 색인 만들기 [동시에] [[존재하지 않으면]이름] ontable_name[사용메소드] (column_name| (표현) [CollateCollation] [opclass] [asc | desc] [nulls 첫 번째 | 마지막 ] [, ...] ) [ 와 함께 (Storage_Parameter[=value] [, ...])] [테이블 스페이스TableSpace_name] [ 어디술어]
색인 범퍼카 토토지정된 관계의 지정된 열에 인덱스를 구성하며, 이는 테이블 또는 구체화 된보기 일 수 있습니다. 인덱스는 주로 데이터베이스 성능을 향상시키는 데 사용됩니다 (부적절한 사용은 성능이 느려질 수 있지만).
인덱스의 키 필드는 열 이름으로 지정되거나 괄호로 작성된 표현식으로 지정됩니다. 인덱스 메소드가 멀티 컬럼 인덱스를 지원하는 경우 여러 필드를 지정할 수 있습니다.
인덱스 필드는 테이블 행의 하나 이상의 열의 값에서 계산 된 표현식 일 수 있습니다. 이 기능은 기본 데이터의 일부 변환에 따라 데이터에 대한 빠른 액세스를 얻는 데 사용될 수 있습니다. 예를 들어, 계산 된 색인어퍼 (col)조항을 허용합니다여기서 상단 (col) = 'Jim'색인을 사용하려면
postgresql색인 방법 B-Tree, HASH, GIST, SP-GIST, GIN 및 BRIN을 제공합니다. 사용자는 또한 자체 색인 방법을 정의 할 수 있지만 상당히 복잡합니다.
언제여기서조항이 있습니다.부분 색인생성됩니다. 부분 색인은 테이블의 일부에 대한 항목을 포함하는 색인이며, 일반적으로 나머지 테이블보다 인덱싱에 더 유용한 부분입니다. 예를 들어, 청구되지 않은 주문이 포함 된 청구되지 않은 명령과 채워지지 않은 주문이 모두 포함 된 테이블이있는 경우, 전체 테이블의 작은 부분을 차지하지만 종종 사용되는 섹션 인 경우 해당 부분에 대한 인덱스를 만들어 성능을 향상시킬 수 있습니다. 또 다른 가능한 응용 프로그램은 사용하는 것입니다여기서with고유 한13075_13130PostgreSQL : 문서 : 9.6 : 부분 범퍼카 토토더 많은 토론을 위해.
여기서절은 기본 테이블의 열만 참조 할 수 있지만 색인화 된 열뿐만 아니라 모든 열을 사용할 수 있습니다. 현재 하위 쿼리 및 집계 표현은 또한 금지되어 있습니다.여기서. 표현식 인 색인 필드에는 동일한 제한이 적용됩니다.
인덱스 정의에 사용되는 모든 함수와 연산자가"불변", 즉, 그들의 결과는 그들의 주장에만 의존해야하며 외부 영향 (예 : 다른 테이블의 내용 또는 현재 시간)에 의존해서는 안됩니다. 이 제한은 지수의 동작이 잘 정의되어 있는지 확인합니다. 인덱스 표현식에서 사용자 정의 함수를 사용하거나여기서조항, 만들 때 불변 할 수없는 기능을 표시하십시오.
인덱스가 범퍼카 토토 될 때 (데이터가 이미 존재하는 경우) 데이터가 추가 될 때 시스템이 테이블의 중복 값을 확인하게합니다. 중복 항목을 초래할 데이터를 삽입하거나 업데이트하려는 시도는 오류가 발생합니다.
이 옵션이 사용될 때PostgreSQL테이블에서 동시 인서트, 업데이트 또는 삭제를 방지하는 잠금 장치를 사용하지 않고 인덱스를 구축합니다. 표준 인덱스 빌드는 끝날 때까지 테이블에 쓴 (읽지 않음)가 잠금됩니다. 이 옵션을 사용할 때 알아야 할 몇 가지 경고가 있습니다. 참조동시에 건물 색인.
임시 테이블의 경우색인 범퍼카 토토| 다른 세션에 액세스 할 수없고, 비 일치한 인덱스 범퍼카 토토은 저렴합니다.
같은 이름과의 관계가 이미 존재하는 경우 오류를 던지지 마십시오. 이 경우 통지가 발행됩니다. 기존 인덱스가 생성 된 인덱스와 비슷하다는 보장은 없습니다. 인덱스 이름이 필요합니다존재하지 않으면지정되어 있습니다.
생성 될 인덱스의 이름. 여기에는 스키마 이름이 포함될 수 없습니다. 인덱스는 항상 상위 테이블과 동일한 스키마에서 생성됩니다. 이름이 생략되면PostgreSQL상위 테이블의 이름과 색인 된 열 이름을 기준으로 적합한 이름을 선택합니다.
색인화 할 테이블의 이름 (스키마 자격).
사용할 인덱스 메소드의 이름. 선택은btree, Hash, gist, SPGIST, 진및브린. 기본 메소드는입니다.btree.
테이블 열의 이름.
테이블의 하나 이상의 열을 기반으로 한 표현식. 표현식은 일반적으로 구문에 표시된 것처럼 주변 괄호로 작성되어야합니다. 그러나 표현식에 함수 호출 형태가 있으면 괄호를 생략 할 수 있습니다.
인덱스에 사용할 수있는 콜레이션 이름. 기본적으로 인덱스는 열이 색인화 될 수 있도록 선언 된 Collation을 사용하거나 표현식의 결과가 인덱싱 될 수 있습니다. 비 디폴트 콜라주가있는 인덱스는 비 디폴트 콜라주를 사용하는 표현식이 포함 된 쿼리에 유용 할 수 있습니다.
운영자 클래스의 이름. 자세한 내용은 아래를 참조하십시오.
오름차순 정렬 순서 (기본값)를 지정합니다.
내림차순 정렬 순서를 지정합니다.
nulls 전에 널 정렬을 지정합니다. 이것은 기본값입니다desc지정되어 있습니다.
널이 아닌 후에 널이 정렬되도록 지정합니다. 이것은 기본값입니다desc지정되지 않았습니다.
인덱스 메드-특정 스토리지 매개 변수의 이름. 보다인덱스 스토리지 매개 변수자세한 내용.
인덱스를 범퍼카 토토하는 테이블 스페이스. 지정되지 않은 경우default_tablespace상담 또는temp_tablespaces임시 테이블의 인덱스 용.
부분 색인에 대한 제약 조건 표현.
선택 사항with조항 지정스토리지 매개 변수색인. 각 인덱스 방법에는 자체 허용 스토리지 매개 변수 세트가 있습니다. B-Tree, Hash, Gist 및 SP-Gist Index 메소드는 모두이 매개 변수를 받아들입니다.
인덱스의 FillFactor는 색인 메소드가 색인 페이지를 포장하려고하는 방법을 결정하는 백분율입니다. B- 트리의 경우 초기 인덱스 빌드 중에 잎 페이지 가이 비율로 채워지고 오른쪽에서 인덱스를 확장 할 때 (새로운 가장 큰 핵심 값 추가). 그 후 페이지가 완전히 가득 차면 분리되어 인덱스의 효율성이 점진적으로 저하됩니다. B- 트리는 90의 기본 FillFactor를 사용하지만 10에서 100까지의 정수 값을 선택할 수 있습니다. 테이블이 정적 인 경우 FillFactor 100은 인덱스의 물리적 크기를 최소화하는 데 가장 적합하지만 심하게 업데이트 된 테이블의 경우 더 작은 FillFactor가 페이지 분할 필요성을 최소화하는 것이 좋습니다. 다른 인덱스 방법은 채우기를 다르지만 대략적으로 유사한 방식으로 사용합니다. 기본 FillFactor는 메소드마다 다릅니다.
GIST 인덱스는이 매개 변수를 추가로 수락합니다.
섹션 61.4.1는 인덱스를 구축하는 데 사용됩니다. 와 함께OFF|on활성화되어 있고auto처음에는 비활성화되었지만 인덱스 크기가 도달하면 날개를 켜십시오exply_ca범퍼카 토토e_size. 기본값은auto.
진 인덱스는 다른 매개 변수를 허용합니다 :
이 설정은에 설명 된 빠른 업데이트 기술의 사용법을 제어합니다섹션 63.4.1. 부울 매개 변수입니다 :on빠른 업데이트 활성화,off비활성화합니다. (대체 철자onandoff에 설명 된대로 허용PostgreSQL : 문서 : 9.6 : 매개 변수 토토 커뮤니티.) 기본값은입니다.on.
참고 :회전FastupdateOFF VIAAlter Index향후 삽입이 보류중인 인덱스 항목 목록으로 들어가는 것을 방지하지만 그 자체로는 이전 항목을 플러시하지 않습니다. 당신은 원할 수도 있습니다진공테이블 또는 전화
gin_clean_pending_list
나중에 보류중인 목록이 비워 지도록 기능합니다.
Customgin_pending_list_limit매개 변수. 이 값은 킬로 바이트로 지정되어 있습니다.
브린인덱스는 다른 매개 변수를 수락합니다 :
a 각 항목에 대해 하나의 블록 범위를 구성하는 테이블 블록의 수를 정의합니다브린색인 (참조섹션 64.1자세한 내용은). 기본값은128.
색인 범퍼카 토토은 데이터베이스의 정기적 인 작동을 방해 할 수 있습니다. 보통PostgreSQL쓰기에 대해 색인화 할 테이블을 잠그고 테이블의 단일 스캔으로 전체 인덱스 빌드를 수행합니다. 다른 트랜잭션은 여전히 테이블을 읽을 수 있지만 테이블에 행을 삽입, 업데이트 또는 삭제하려고하면 인덱스 빌드가 완료 될 때까지 차단됩니다. 시스템이 라이브 프로덕션 데이터베이스 인 경우 심각한 영향을 줄 수 있습니다. 매우 큰 테이블을 색인화하는 데 많은 시간이 걸릴 수 있으며, 작은 테이블의 경우, 인덱스 빌드는 제작 시스템에 대해 용납 할 수없는 기간 동안 작가를 잠글 수 있습니다..
PostgreSQL쓰기를 잠그지 않고 건물 지수를 지원합니다. 이 방법은를 지정하여 호출됩니다.동시에옵션색인 범퍼카 토토. 이 옵션이 사용될 때PostgreSQL테이블의 두 가지 스캔을 수행해야하며, 또한 인덱스를 수정하거나 종료 할 수있는 모든 기존 트랜잭션을 기다려야합니다. 따라서이 방법은 표준 색인 빌드보다 더 많은 총 작업이 필요하며 완료하는 데 훨씬 더 오래 걸립니다. 그러나 인덱스가 구축되는 동안 일반 작업이 계속 될 수 있으므로이 방법은 생산 환경에서 새로운 인덱스를 추가하는 데 유용합니다. 물론 인덱스 범퍼카 토토에 의해 부과 된 추가 CPU 및 I/O 부하는 다른 작업 속도를 늦출 수 있습니다.
동시 인덱스 빌드에서 인덱스는 실제로 한 번의 트랜잭션에서 시스템 카탈로그에 입력 한 다음 두 개의 테이블 스캔이 두 개의 트랜잭션에서 발생합니다. 각 테이블 스캔 전에 인덱스 빌드는 테이블이 종료 될 기존 트랜잭션을 기다려야합니다. 두 번째 스캔 후 인덱스 빌드는 스냅 샷이있는 트랜잭션을 기다려야합니다 (참조토토 사이트 : 문서 : 9.6 : 토토 사이트 제어) 다른 테이블에 동시 인덱스를 구축하는 모든 단계에서 사용되는 트랜잭션을 포함하여 두 번째 스캔을 종료 할 때. 마지막으로 인덱스를 사용할 준비가 될 수 있으며색인 범퍼카 토토명령이 종료됩니다. 그러나 그럼에도 불구하고 인덱스는 쿼리에 대해 즉시 사용할 수 없을 수 있습니다. 최악의 경우 인덱스 빌드의 시작을 미리 발행하는 트랜잭션이 존재하는 한 사용할 수 없습니다..
고유 한 지수의 교착 상태 또는 고유성 위반과 같은 테이블을 스캔하는 동안 문제가 발생하면색인 범퍼카 토토명령은 실패하지만 뒤에 남겨 둡니다."유효하지 않은"색인. 이 색인은 불완전 할 수 있으므로 쿼리 목적으로 무시됩니다. 그러나 여전히 업데이트 오버 헤드를 소비합니다. 그만큼PSQL \ d명령은와 같은 색인을보고합니다.Invalid:
postgres =# \ d 탭 "public.tab"테이블 열 | 유형 | 수정 자 --------+--------+----------- col | 정수 | 인덱스 : "idx"btree (col) 잘못된
그러한 경우 권장되는 복구 방법은 인덱스를 삭제하고 다시 수행하는 것입니다동시에 색인 범퍼카 토토. (또 다른 가능성은로 색인을 재건하는 것입니다.Reindex. 그러나 이후로Reindex동시 빌드를 지원하지 않으면이 옵션은 매력적이지 않을 것 같지 않습니다.)
고유 한 인덱스를 동시에 구축 할 때의 또 다른 경고는 두 번째 테이블 스캔이 시작될 때 독창성 제약이 이미 다른 트랜잭션에 대해 시행되고 있다는 것입니다. 이는 인덱스를 사용할 수있게되기 전에 또는 인덱스 빌드가 결국 실패한 경우 조건 위반이 다른 쿼리에서보고 될 수 있음을 의미합니다. 또한 두 번째 스캔에서 실패가 발생하면"무효"인덱스는 계속해서 고유성 제약을 시행하고 있습니다.
동시에 표현식 인덱스 및 부분 인덱스의 동시 빌드가 지원됩니다. 이러한 표현식의 평가에서 발생하는 오류는 고유 한 제약 위반에 대해 위에서 설명한 것과 유사한 행동을 유발할 수 있습니다.
일반 색인 빌드는 동일한 테이블의 다른 일반 색인 빌드가 동시에 발생할 수 있도록 허용하지만 한 번에 테이블에서 하나의 동시 인덱스 빌드 만 발생할 수 있습니다. 두 경우 모두 테이블의 다른 유형의 스키마 수정은 허용되지 않습니다. 또 다른 차이점은 정기적 인 것입니다색인 범퍼카 토토명령을 트랜잭션 블록 내에서 수행 할 수 있지만동시에 색인 범퍼카 토토할 수 없습니다.
참조토토 베이 : 문서 : 9.6 : 인덱스인덱스를 사용할 수있는시기, 사용되지 않으면 어떤 특정 상황에서 유용 할 수 있는지에 대한 정보는
주의 |
해시 인덱스 작업이 현재 월경이 아니므로 해시 인덱스가 재건되어야 할 수도 있습니다Reindex작성되지 않은 변경이있는 경우 데이터베이스 충돌 후. 또한 초기 기본 백업 후 스트리밍 또는 파일 기반 복제를 통해 해시 인덱스 변경이 복제되지 않으므로 이후에 사용하는 쿼리에 대한 답변을 제공합니다. 해시 인덱스는 또한 시점 회복 중에 제대로 복원되지 않습니다. 이러한 이유로 해시 지수 사용은 현재 낙담합니다. |
현재 B-Tree, Gist, Gin 및 Brin Index 메서드만이 다중 색 인덱스를 지원합니다. 기본적으로 최대 32 개의 필드를 지정할 수 있습니다. (이 한도는 빌드시 변경 될 수 있습니다PostgreSQL.) B-Tree 만 현재 고유 인덱스를 지원합니다.
an운영자 클래스인덱스의 각 열에 대해 지정할 수 있습니다. 연산자 클래스는 해당 열의 인덱스에서 사용하도록 연산자를 식별합니다. 예를 들어, 4 바이트 정수의 B-Tree 지수는를 사용합니다.int4_ops클래스; 이 연산자 클래스에는 4 바이트 정수에 대한 비교 기능이 포함되어 있습니다. 실제로 열 데이터 유형의 기본 연산자 클래스로는 일반적으로 충분합니다. 운영자 클래스를 갖는 주요 요점은 일부 데이터 유형의 경우 둘 이상의 의미있는 순서가있을 수 있다는 것입니다. 예를 들어, 복잡한 수 데이터 유형을 절대 값 또는 실제 부분별로 정렬 할 수 있습니다. 데이터 유형에 대한 두 개의 운영자 클래스를 정의한 다음 인덱스를 만들 때 적절한 클래스를 선택하여이를 수행 할 수 있습니다. 운영자 클래스에 대한 자세한 정보는입니다.PostgreSQL : 문서 : 9.6 : 스포츠 토토 결과 클래스 및 스포츠 토토 결과 가족and inPostgreSQL : 문서화 : 9.6 : 토토 꽁 머니 대한 확장 프로그램.
순서 스캔을 지원하는 색인 방법의 경우 (현재, B- 트리 만), 옵션 조항ASC, desc, Nulls First및/또는널 마지막지정하여 인덱스의 정렬 순서를 수정할 수 있습니다. 정렬 된 인덱스를 앞뒤로 스캔 할 수 있으므로 일반적으로 단일 열을 만드는 것은 유용하지 않습니다.descindex - 정렬 주문은 이미 일반 색인으로 사용할 수 있습니다. 이러한 옵션의 값은 혼합 주문 쿼리에서 요청한 정렬 순서와 일치하는 멀티 컬럼 인덱스가 생성 될 수 있다는 것입니다.선택 ... X ASC, y desc 주문. 그만큼nulls지원 해야하는 경우 옵션이 유용합니다"Nulls Sort Low"기본값이 아닌 동작"Nulls Sort High", 정렬 단계를 피하기 위해 인덱스에 의존하는 쿼리로
시스템은 정기적으로 테이블의 모든 열에 대한 통계를 수집합니다. 새로 만들어진 비 표현 지수는 이러한 통계를 즉시 사용하여 인덱스의 유용성을 결정할 수 있습니다. 새로운 표현 인덱스의 경우 실행이 필요합니다Analyze또는 대기autovacuum daemon이 인덱스에 대한 통계를 범퍼카 토토하기 위해 테이블을 분석하려면
대부분의 인덱스 방법의 경우 인덱스 범퍼카 토토 속도는의 설정에 따라 다릅니다.maintenance_work_mem. 더 큰 값은 실제로 사용 가능한 메모리의 양보다 크게 만들지 않는 한 인덱스 범퍼카 토토에 필요한 시간을 줄일 수 있습니다.
usePostgreSQL : 문서 : 9.6 : 젠 토토 Index인덱스를 제거하려면
사전 릴리스PostgreSQLr-tree index 방법이있었습니다. 이 방법은 GIST 방법에 비해 큰 장점이 없기 때문에 제거되었습니다. 만약에RTREE 사용지정되어 있습니다.색인 범퍼카 토토GIST 사용, 오래된 데이터베이스를 GIST로 전환하기 위해.
열에서 b- 트리 색인 범퍼카 토토제목표에서영화:
필름에 고유 한 색인 제목 _idx 만들기 (제목);
표현식에 대한 색인 범퍼카 토토Lower (Title), 효율적인 사례 불신 검색 허용 :
필름에서 색인 범퍼카 토토 ((lower (title));
(이 예에서는 인덱스 이름을 생략하기로 선택한 경우 시스템이 이름, 일반적으로 선택합니다films_lower_idx.)
Default Collation이 아닌 인덱스 생성 :
영화에서 인덱스 제작 _idx_german (Title Collate "de_de");
32383_32444
영화에서 인덱스 제작 _idx_nulls_low (Title Nulls First);
비 분리 채우기 요소로 인덱스를 범퍼카 토토하려면 :
필름 (title)에서 고유 인덱스 제목 _idx 생성 (fillfactor = 70);
a진빠른 업데이트가있는 색인 비활성화 :
with (fastupdate = off);를 사용하여 gin (위치)을 사용하여 documents_table에서 index gin_idx를 만듭니다.
열에서 색인을 범퍼카 토토하려면코드표에서영화그리고 인덱스가 테이블 스페이스에 존재하게indexspace:
필름에서 인덱스 Code_Idx 만들기 (코드) TableSpace Indexspace;
전환 함수 결과에 대해 박스 연산자를 효율적으로 사용할 수 있도록 포인트 속성에 GIST 인덱스를 작성하려면
인덱스 포인트를 작성합니다 GIST를 사용하는 지점 (상자 (위치, 위치)); * From Points를 선택하십시오 Where Box (위치, 위치) && '(0,0), (1,1)':: Box;
잠금하지 않고 인덱스를 작성하려면 테이블에 쓴다 :
sales_table (수량)에서 동시에 sales_quantity_index 생성 동시에 sales_quantity_index 생성;