색인 생성 - 새 인덱스 정의
[고유 한] 색인 생성 [동시에] [[존재하지 않으면]이름
] 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고유 한
테이블의 하위 집합에 대한 고유성을 시행합니다. 보다PostgreSQL : 문서 : 10 : 11.8. 배트맨 토토 색인더 많은 토론을 위해.
여기서
절은 기본 테이블의 열만 참조 할 수 있지만 색인화 된 열뿐만 아니라 모든 열을 사용할 수 있습니다. 현재 하위 쿼리 및 집계 표현은 또한 금지되어 있습니다.여기서
. 표현식 인 색인 필드에는 동일한 제한이 적용됩니다.
토토 사이트 순위 정의에 사용되는 모든 기능 및 연산자“불변”, 즉, 결과는 그들의 주장에만 의존해야하며 외부 영향 (예 : 다른 테이블의 내용 또는 현재 시간)에 의존해서는 안됩니다. 이 제한은 지수의 동작이 잘 정의되어 있는지 확인합니다. 인덱스 표현식에서 사용자 정의 함수를 사용하거나여기서
조항, 만들 때 불변 할 수없는 기능을 표시하십시오.
고유 한
토토 사이트 순위가 생성 될 때 (데이터가 이미 존재하는 경우) 데이터가 추가 될 때 시스템이 테이블의 중복 값을 확인하게합니다. 중복 항목을 초래할 데이터를 삽입하거나 업데이트하려는 시도는 오류가 발생합니다.
동시에
이 옵션이 사용될 때PostgreSQL테이블에서 동시 인서트, 업데이트 또는 삭제를 방지하는 잠금 장치를 사용하지 않고 토토 사이트 순위를 구축합니다. 표준 토토 사이트 순위 빌드는 끝날 때까지 테이블에 쓴 (읽지 않음)가 잠금됩니다. 이 옵션을 사용할 때 알아야 할 몇 가지 경고가 있습니다. 참조동시에 건물 색인.
임시 테이블의 경우색인 생성
다른 세션에 액세스 할 수없고, 비 일치하는 토토 사이트 순위 생성은 저렴합니다..
존재하지 않으면
같은 이름과의 관계가 이미 존재하는 경우 오류를 던지지 마십시오. 이 경우 통지가 발행됩니다. 기존 인덱스가 생성 된 인덱스와 비슷하다는 보장은 없습니다. 인덱스 이름이 필요합니다존재하지 않으면
지정되어 있습니다.
이름
생성 될 인덱스의 이름. 여기에는 스키마 이름이 포함될 수 없습니다. 인덱스는 항상 상위 테이블과 동일한 스키마에서 생성됩니다. 이름이 생략되면PostgreSQL상위 테이블의 이름과 색인 된 열 이름을 기준으로 적합한 이름을 선택합니다.
table_name
색인화 할 테이블의 이름 (schema-qualified).
메소드
사용할 인덱스 메소드의 이름. 선택은btree
, Hash
, gist
, Spgist
, 진
, 브린
또는 사용자가 설치 한 액세스 방법사설 토토 PostgreSQL : 문서 : 10 : F.5. 꽃. 기본 메소드는입니다.btree
.
column_name
테이블 열의 이름.
표현
테이블의 하나 이상의 열을 기반으로 한 표현. 표현식은 일반적으로 구문에 표시된 것처럼 주변 괄호로 작성되어야합니다. 그러나 표현식에 함수 호출 형태가 있으면 괄호를 생략 할 수 있습니다.
Collation
인덱스에 사용할 수있는 콜레이션 이름. 기본적으로 인덱스는 열이 색인화 될 수 있도록 선언 된 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 메소드는 모두이 매개 변수를 받아들입니다.
FillFactor
인덱스의 FillFactor는 인덱스 메소드가 색인 페이지를 포장하려고하는 방법을 결정하는 백분율입니다. B- 트리의 경우 초기 인덱스 빌드 중에 잎 페이지 가이 비율로 채워지고 오른쪽에서 인덱스를 확장 할 때 (새로운 가장 큰 핵심 값 추가). 그 후 페이지가 완전히 가득 차면 분리되어 인덱스의 효율성이 점진적으로 저하됩니다. B- 트리는 90의 기본 FillFactor를 사용하지만 10에서 100까지의 정수 값을 선택할 수 있습니다. 테이블이 정적 인 경우 FillFactor 100은 인덱스의 물리적 크기를 최소화하는 데 가장 적합하지만 심하게 업데이트 된 테이블의 경우 더 작은 FillFactor가 페이지 분할 필요성을 최소화하는 것이 좋습니다. 다른 인덱스 방법은 채우기를 다르지만 대략적으로 유사한 방식으로 사용합니다. 기본 FillFactor는 메소드마다 다릅니다.
GIST 인덱스 추가 로이 매개 변수를 수락합니다.
버퍼링
섹션 62.4.1토토 사이트 순위를 구축하는 데 사용됩니다. 와 함께OFF
|on
활성화되고auto
처음에는 비활성화되었지만 토토 사이트 순위 크기에 도달하면 날개를 켜십시오explud_ca토토 사이트 순위e_size. 기본값은auto
.
진 인덱스는 다른 매개 변수를 허용합니다 :
Fastupdate
이 설정은에 설명 된 빠른 업데이트 기술의 사용법을 제어합니다.섹션 64.4.1. 부울 매개 변수입니다 :on
빠른 업데이트 활성화,OFF
비활성화합니다. (대체 철자on
andOFF
에 설명 된대로 허용PostgreSQL : 문서 : 10 : 19.1. 매개 토토 베이 설정.) 기본값은입니다.on
.
회전Fastupdate
OFF VIAAlter Index
향후 삽입이 보류중인 토토 사이트 순위 항목 목록으로 들어가는 것을 방지하지만 그 자체로는 이전 항목을 플러시하지 않습니다. 당신은 원할 수도 있습니다진공
테이블 또는 전화gin_clean_pending_list
나중에 보류중인 목록이 비워 지도록 기능합니다.
gin_pending_list_limit
Customgin_pending_list_limit매개 변수. 이 값은 킬로 바이트로 지정되어 있습니다.
브린인덱스는 다른 매개 변수를 허용합니다 :
pages_per_range
a 각 항목에 대해 하나의 블록 범위를 구성하는 테이블 블록의 수를 정의합니다브린index (참조섹션 65.1자세한 내용은). 기본값은128
.
AutosumMarize
다음 페이지에서 삽입이 감지 될 때마다 이전 페이지 범위에 대해 요약 실행이 호출되는지 여부를 정의합니다.
토토 사이트 순위 생성은 데이터베이스의 정기적 인 작동을 방해 할 수 있습니다. 보통PostgreSQL쓰기에 대해 색인화 할 테이블을 잠그고 테이블의 단일 스캔으로 전체 토토 사이트 순위 빌드를 수행합니다. 다른 트랜잭션은 여전히 테이블을 읽을 수 있지만 테이블에 행을 삽입, 업데이트 또는 삭제하려고하면 토토 사이트 순위 빌드가 완료 될 때까지 차단됩니다. 시스템이 라이브 프로덕션 데이터베이스 인 경우 심각한 영향을 줄 수 있습니다. 매우 큰 테이블을 색인화하는 데 많은 시간이 걸릴 수 있으며, 작은 테이블의 경우, 토토 사이트 순위 빌드는 제작 시스템에 대해 용납 할 수없는 기간 동안 작가를 잠글 수 있습니다..
PostgreSQL쓰기를 잠그지 않고 건물 지수를 지원합니다. 이 방법은를 지정하여 호출됩니다.동시에
옵션색인 생성
. 이 옵션이 사용될 때PostgreSQL테이블의 두 스캔을 수행해야하며, 또한 토토 사이트 순위를 수정하거나 종료 할 수있는 모든 기존 트랜잭션을 기다려야합니다. 따라서이 방법은 표준 색인 빌드보다 더 많은 총 작업이 필요하며 완료하는 데 훨씬 더 오래 걸립니다. 그러나 토토 사이트 순위가 구축되는 동안 일반 작업이 계속 될 수 있으므로이 방법은 생산 환경에서 새로운 토토 사이트 순위를 추가하는 데 유용합니다. 물론 토토 사이트 순위 생성에 의해 부과 된 추가 CPU 및 I/O 부하는 다른 작업 속도를 늦출 수 있습니다.
동시 토토 사이트 순위 빌드에서 토토 사이트 순위는 실제로 한 번의 트랜잭션에서 시스템 카탈로그에 입력 한 다음 두 개의 트랜잭션에서 두 개의 테이블 스캔이 발생합니다. 각 테이블 스캔 전에 토토 사이트 순위 빌드는 테이블이 종료 될 기존 트랜잭션을 기다려야합니다. 두 번째 스캔 후 토토 사이트 순위 빌드는 스냅 샷이있는 트랜잭션을 기다려야합니다 (참조PostgreSQL : 문서 : 10 : 13 장. 무지개 토토 제어) 다른 테이블에 동시 토토 사이트 순위를 구축하는 모든 단계에서 사용되는 트랜잭션을 포함하여 두 번째 스캔을 종료해야합니다. 마지막으로 토토 사이트 순위를 사용할 준비가 될 수 있으며색인 생성
명령이 종료됩니다. 그러나 그럼에도 불구하고 토토 사이트 순위는 쿼리에 대해 즉시 사용할 수 없을 수 있습니다. 최악의 경우 토토 사이트 순위 빌드의 시작을 미리 발행하는 트랜잭션이 존재하는 한 사용할 수 없습니다..
고유 한 지수의 교착 상태 또는 고유성 위반과 같은 테이블을 스캔하는 동안 문제가 발생하면색인 생성
명령은 실패하지만 뒤에 남겨 둡니다“Invalid”색인. 이 색인은 불완전 할 수 있으므로 쿼리 목적으로 무시됩니다. 그러나 여전히 업데이트 오버 헤드를 소비합니다. 그만큼PSQL \ d
명령은 그러한 색인을와 같은보고합니다.Invalid
:
postgres =# \ d 탭 "public.tab"테이블 열 | 유형 | Collation | 무효 | 기본 --------+--------+------------------------------- col | 정수 | | | 인덱스 : "idx"btree (col) 잘못된
그러한 경우 권장되는 복구 방법은 토토 사이트 순위를 삭제하고 다시 수행하는 것입니다동시에 색인 생성
. (또 다른 가능성은로 색인을 재건하는 것입니다.Reindex
. 그러나 이후로Reindex
동시 빌드를 지원하지 않으면이 옵션은 매력적이지 않을 것 같지 않습니다.)
고유 한 인덱스를 동시에 구축 할 때의 또 다른 경고는 두 번째 테이블 스캔이 시작될 때 독창성 제약이 이미 다른 트랜잭션에 대해 시행되고 있다는 것입니다. 이는 인덱스를 사용할 수있게되기 전에 또는 인덱스 빌드가 결국 실패한 경우 조건 위반이 다른 쿼리에서보고 될 수 있음을 의미합니다. 또한 두 번째 스캔에서 실패가 발생하면“Invalid”토토 사이트 순위는 계속해서 고유성 제약을 시행하고 있습니다.
동시 표현식 인덱스 및 부분 인덱스의 동시 빌드가 지원됩니다. 이러한 표현식의 평가에서 발생하는 오류는 고유 한 제약 위반에 대해 위에서 설명한 것과 유사한 행동을 유발할 수 있습니다.
일반 색인 빌드는 동일한 테이블의 다른 일반 색인 빌드가 동시에 발생할 수 있도록 허용하지만 한 번에 테이블에서 하나의 동시 인덱스 빌드 만 발생할 수 있습니다. 두 경우 모두 테이블의 다른 유형의 스키마 수정은 허용되지 않습니다. 또 다른 차이점은 정기적 인 것입니다색인 생성
명령은 트랜잭션 블록 내에서 수행 할 수 있지만동시에 색인 생성
할 수 없습니다.
참조와이즈 토토 : 문서 : 10 : 11 장 INDEXES토토 사이트 순위를 사용할 수있는시기, 사용하지 않을 때 및 특정 상황에서 유용 할 수있는 정보에 대한 정보.
현재 B-Tree, Gist, Gin 및 Brin Index 메서드만이 다중 색 토토 사이트 순위를 지원합니다. 기본적으로 최대 32 개의 필드를 지정할 수 있습니다. (이 한도는 빌드시 변경 될 수 있습니다PostgreSQL.) B-Tree 만 현재 고유 토토 사이트 순위를 지원합니다.
an운영자 클래스토토 사이트 순위의 각 열에 대해 지정할 수 있습니다. 연산자 클래스는 해당 열의 토토 사이트 순위에서 사용하도록 연산자를 식별합니다. 예를 들어, 4 바이트 정수의 B-Tree 지수는를 사용합니다.int4_ops
클래스; 이 연산자 클래스에는 4 바이트 정수에 대한 비교 기능이 포함되어 있습니다. 실제로 열 데이터 유형의 기본 연산자 클래스로는 일반적으로 충분합니다. 운영자 클래스를 갖는 주요 요점은 일부 데이터 유형의 경우 둘 이상의 의미있는 순서가있을 수 있다는 것입니다. 예를 들어, 복잡한 수 데이터 유형을 절대 값 또는 실제 부분별로 정렬 할 수 있습니다. 데이터 유형에 대한 두 개의 운영자 클래스를 정의한 다음 인덱스를 만들 때 적절한 클래스를 선택하여이를 수행 할 수 있습니다. 운영자 클래스에 대한 자세한 정보는입니다.토토 캔 : 문서 : 10 : 11.9. 운영자 수업 및 운영자 가족and inPostgreSQL : 문서 : 10 : 37.14. 토토 꽁 머니 대한 확장 인터페이스.
순서 스캔을 지원하는 색인 메소드 (현재 B- 트리 만), 선택적 조항ASC
, desc
, Nulls First
및/또는널 마지막
지정하여 토토 사이트 순위의 정렬 순서를 수정할 수 있습니다. 정렬 된 토토 사이트 순위를 앞뒤로 스캔 할 수 있으므로 일반적으로 단일 열을 만드는 것은 유용하지 않습니다.desc
index - 정렬 주문은 이미 일반 색인으로 사용할 수 있습니다. 이러한 옵션의 값은 혼합 주문 쿼리에서 요청한 정렬 순서와 일치하는 멀티 컬럼 인덱스가 생성 될 수 있다는 것입니다.선택 ... X ASC, y desc 주문
. 그만큼nulls
지원 해야하는 경우 옵션이 유용합니다“Nulls Sort Low”기본값이 아닌 동작“Nulls Sort High”, 정렬 단계를 피하기 위해 토토 사이트 순위에 의존하는 쿼리로
시스템은 정기적으로 모든 테이블 열에 통계를 수집합니다. 새로 만들어진 비 표현 지수는 이러한 통계를 즉시 사용하여 인덱스의 유용성을 결정할 수 있습니다. 새로운 표현 인덱스의 경우 실행이 필요합니다분석
또는 대기autovacuum daemon이 인덱스에 대한 통계를 생성하기 위해 테이블을 분석하려면
대부분의 토토 사이트 순위 방법의 경우 토토 사이트 순위 생성 속도는의 설정에 따라 다릅니다.maintenance_work_mem. 더 큰 값은 실제로 사용 가능한 메모리의 양보다 크게 만들지 않는 한 토토 사이트 순위 생성에 필요한 시간을 줄일 수 있습니다.
use범퍼카 토토 PostgreSQL색인을 제거하려면
사전 릴리스PostgreSQLr-tree index 방법이있었습니다. 이 방법은 GIST 방법에 비해 큰 장점이 없기 때문에 제거되었습니다. 만약에RTREE 사용
지정되어 있습니다.색인 생성
그것을로 해석합니다.GIST 사용
, 오래된 데이터베이스의 GIST로 변환을 단순화하려면
열에서 b- 트리 색인을 생성하려면제목
표에서영화
:
필름에 고유 한 색인 제목 _idx 만들기 (제목);
표현식에 대한 색인 생성하단 (제목)
, 효율적인 사례 감수성 검색 허용 :
필름에서 색인 생성 ((lower (title));
(이 예에서는 인덱스 이름을 생략하기로 선택한 경우 시스템이 이름, 일반적으로 선택합니다films_lower_idx
.)
Default Collation이 아닌 인덱스 생성 :
영화에서 인덱스 제작 _idx_german 만들기 (Title Collate "de_de");
널의 비 디폴트 정렬 순서로 색인을 생성하려면 :
영화에서 인덱스 제작 _idx_nulls_low (Title Nulls First);
비 분리 채우기 요소가있는 토토 사이트 순위 생성 :
(filmfactor = 70);
agin빠른 업데이트가 장애가있는 색인 :
with (fastupdate = off);를 사용하여 gin (locations)을 사용하여 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 생성;
색인 생성
isPostgreSQL언어 확장. SQL 표준에는 토토 사이트 순위에 대한 조항이 없습니다.