| 젠 토토 : 문서 : 9.6 : 젠 토토 | |||
|---|---|---|---|
| 롤 토토 : 문서 : 9.6 : 그룹 만들기 | 토토 사이트 순위 PostgreSQL : 문서 : 9.6 : SQL 명령 | PostgreSQL : 문서 : 9.6 : 토토 꽁 머니 생성 | |
[ 고유 ] 인덱스 범퍼카 토토 [ 동시 ] [ [ 존재하지 않는 경우 ]이름] 켜짐테이블_이름[ 사용 중방법 ]
( { 열_이름 | ( 표현) [ 대조조합 ] [ opclass] [ ASC | DESC ] [ NULLS 첫 번째 | 마지막 ] [, ...] )
[ 와 (storage_parameter [= 값] [, ... ] ) ]
[테이블스페이스테이블스페이스_이름]
[어디에서술어 ]색인 범퍼카 토토지정된 관계의 지정된 열(테이블 또는 구체화된 뷰일 수 있음)에 인덱스를 범퍼카 토토합니다. 인덱스는 주로 데이터베이스 성능을 향상시키는 데 사용됩니다(부적절하게 사용하면 성능이 저하될 수 있음).
색인의 키 필드는 열 이름으로 지정되거나 괄호 안에 작성된 표현식으로 지정됩니다. 인덱스 방법이 다중 열 인덱스를 지원하는 경우 여러 필드를 지정할 수 있습니다.
인덱스 필드는 테이블 행의 하나 이상의 열 값에서 계산된 표현식일 수 있습니다. 이 기능을 사용하면 기본 데이터의 일부 변환을 기반으로 데이터에 빠르게 액세스할 수 있습니다. 예를 들어, 다음에서 계산된 인덱스입니다.상단(열)다음 조항을 허용하겠습니다WHERE 상단(열) = 'JIM'색인을 사용합니다.
포스트그레SQL인덱스 메소드 B-tree, hash, GiST, SP-GiST, GIN 및 BRIN을 제공합니다. 사용자는 자신만의 색인 방법을 정의할 수도 있지만 이는 상당히 복잡합니다.
때어디절이 존재합니다. a부분 색인생성되었습니다. 부분 인덱스는 테이블의 일부(일반적으로 테이블의 나머지 부분보다 인덱싱에 더 유용한 부분)에 대한 항목만 포함하는 인덱스입니다. 예를 들어 청구되지 않은 주문과 청구되지 않은 주문이 모두 포함된 테이블이 있고 청구되지 않은 주문이 전체 테이블의 작은 부분을 차지하지만 자주 사용되는 섹션인 경우 해당 부분에 대해서만 인덱스를 생성하여 성능을 향상시킬 수 있습니다. 또 다른 가능한 응용 프로그램은 다음을 사용하는 것입니다.어디와고유테이블의 하위 집합에 고유성을 적용합니다. 참조PostgreSQL : 문서 : 9.6 : 부분 범퍼카 토토더 많은 토론을 원하시면.
다음에 사용된 표현어디절은 기본 테이블의 열만 참조할 수 있지만 인덱싱되는 열뿐만 아니라 모든 열을 사용할 수 있습니다. 현재 하위 쿼리와 집계 표현식도 금지됩니다.어디. 표현식인 인덱스 필드에도 동일한 제한사항이 적용됩니다.
색인 정의에 사용되는 모든 함수와 연산자는 다음과 같아야 합니다."불변", 즉 결과는 인수에만 의존해야 하며 외부 영향(예: 다른 테이블의 내용이나 현재 시간)에는 절대 의존하지 않아야 합니다. 이러한 제한을 통해 인덱스 동작이 잘 정의됩니다. 인덱스 표현식에서 사용자 정의 함수를 사용하려면 또는어디절, 함수를 범퍼카 토토할 때 함수를 불변으로 표시하는 것을 잊지 마세요.
인덱스가 범퍼카 토토되고(데이터가 이미 존재하는 경우) 데이터가 추가될 때마다 시스템이 테이블에서 중복된 값을 확인하도록 합니다. 중복 항목이 발생하는 데이터를 삽입하거나 업데이트하려고 하면 오류가 발생합니다.
이 옵션을 사용하면,PostgreSQL테이블에 대한 동시 삽입, 업데이트 또는 삭제를 방지하는 잠금을 사용하지 않고 인덱스를 구축합니다. 반면 표준 인덱스 빌드는 완료될 때까지 테이블에 대한 쓰기(읽기는 제외)를 잠급니다. 이 옵션을 사용할 때 주의해야 할 몇 가지 주의 사항이 있습니다. — 참조동시에 색인 작성.
임시 테이블의 경우,색인 범퍼카 토토다른 세션이 액세스할 수 없으므로 항상 비동시적이며, 비동시 색인 범퍼카 토토이 더 저렴합니다.
동일한 이름을 가진 관계가 이미 존재하는 경우 오류를 발생시키지 마십시오. 이 경우 통지가 발행됩니다. 기존 인덱스가 생성되었을 인덱스와 유사하다는 보장은 없습니다. 다음과 같은 경우 인덱스 이름이 필요합니다.존재하지 않는 경우지정되었습니다.
생성될 색인의 이름. 여기에는 스키마 이름을 포함할 수 없습니다. 인덱스는 항상 상위 테이블과 동일한 스키마에 생성됩니다. 이름이 생략된 경우,PostgreSQL상위 테이블 이름과 색인화된 열 이름을 기반으로 적절한 이름을 선택합니다.
인덱싱할 테이블의 이름(스키마 한정 가능).
사용할 색인 방법의 이름. 선택 사항은 다음과 같습니다.브트리, 해시, 요점, spgist, 진및브린. 기본 방법은 다음과 같습니다.브트리.
테이블의 열 이름.
테이블의 하나 이상의 열을 기반으로 한 표현식입니다. 표현식은 일반적으로 구문에 표시된 대로 괄호로 묶어 작성해야 합니다. 다만, 함수호출 형태의 경우에는 괄호를 생략할 수 있습니다.
색인에 사용할 데이터 정렬의 이름. 기본적으로 인덱스는 인덱싱할 열에 대해 선언된 데이터 정렬 또는 인덱스할 표현식의 결과 데이터 정렬을 사용합니다. 기본이 아닌 데이터 정렬이 포함된 인덱스는 기본이 아닌 데이터 정렬을 사용하는 식과 관련된 쿼리에 유용할 수 있습니다.
연산자 클래스의 이름. 자세한 내용은 아래를 참조하세요.
오름차순 정렬 순서를 지정합니다(기본값).
내림차순 정렬 순서를 지정합니다.
null이 null이 아닌 항목보다 먼저 정렬되도록 지정합니다. 다음의 경우 기본값입니다.설명지정되었습니다.
null이 null이 아닌 항목 다음에 정렬되도록 지정합니다. 다음의 경우 기본값입니다.설명지정되지 않았습니다.
인덱스 메소드별 저장 매개변수의 이름입니다. 참조인덱스 저장소 매개변수자세한 내용은.
인덱스를 범퍼카 토토할 테이블스페이스입니다. 지정하지 않은 경우,default_tablespace상담되었거나temp_tablespaces임시 테이블의 인덱스용.
부분 색인에 대한 제약 조건 표현식입니다.
선택사항위드절이 지정함저장 매개변수색인용. 각 인덱스 메소드에는 고유한 허용된 저장 매개변수 세트가 있습니다. B-트리, 해시, GiST 및 SP-GiST 인덱스 방법은 모두 이 매개변수를 허용합니다.
인덱스의 채우기 비율은 인덱스 방법이 인덱스 페이지를 얼마나 가득 채웠는지 결정하는 백분율입니다. B-트리의 경우 리프 페이지는 초기 인덱스 구축 중에 그리고 오른쪽에서 인덱스를 확장할 때(새 가장 큰 키 값 추가) 이 백분율로 채워집니다. 나중에 페이지가 완전히 가득 차면 페이지가 분할되어 인덱스 효율성이 점차 저하됩니다. B-트리는 기본 채우기 비율 90을 사용하지만 10에서 100 사이의 정수 값을 선택할 수 있습니다. 테이블이 정적이면 fillfactor 100이 인덱스의 물리적 크기를 최소화하는 데 가장 적합하지만, 많이 업데이트된 테이블의 경우 페이지 분할의 필요성을 최소화하려면 더 작은 fillfactor가 더 좋습니다. 다른 인덱스 방법은 채우기 요소를 다르지만 대략 유사한 방식으로 사용합니다. 기본 채우기 요소는 메서드마다 다릅니다.
GiST 색인은 추가로 이 매개변수를 허용합니다.
GIN 색인은 다양한 매개변수를 허용합니다:
이 설정은 다음에 설명된 빠른 업데이트 기술의 사용을 제어합니다.섹션 63.4.1. 부울 매개변수입니다.ON빠른 업데이트를 활성화합니다.꺼짐비활성화합니다. (대체 철자법)ON그리고꺼짐설명된 대로 허용됩니다.PostgreSQL : 문서 : 9.6 : 매개 변수 토토 커뮤니티.) 기본값은켜짐.
참고:돌아가는 중빠른 업데이트꺼짐 경유변경 인덱스향후 삽입이 보류 중인 색인 항목 목록에 들어가는 것을 방지하지만 그 자체로 이전 항목을 플러시하지는 않습니다. 당신은 원할 수도 있습니다진공테이블 또는 전화
gin_clean_pending_list나중에 보류 목록이 비워졌는지 확인하는 함수입니다.
커스텀gin_pending_list_limit매개변수. 이 값은 킬로바이트 단위로 지정됩니다.
브린색인은 다른 매개변수를 허용합니다:
a의 각 항목에 대해 하나의 블록 범위를 구성하는 테이블 블록의 수를 정의합니다.브린색인(참조섹션 64.1자세한 내용은). 기본값은128.
색인을 범퍼카 토토하면 데이터베이스의 일반 작동을 방해할 수 있습니다. 일반적으로PostgreSQL인덱싱할 테이블을 쓰기에 대해 잠그고 테이블을 한 번 스캔하여 전체 인덱스 빌드를 수행합니다. 다른 트랜잭션은 여전히 테이블을 읽을 수 있지만 테이블의 행을 삽입, 업데이트 또는 삭제하려고 하면 인덱스 구축이 완료될 때까지 차단됩니다. 시스템이 실제 프로덕션 데이터베이스인 경우 이는 심각한 영향을 미칠 수 있습니다. 매우 큰 테이블은 색인을 범퍼카 토토하는 데 많은 시간이 걸릴 수 있으며, 작은 테이블의 경우에도 색인 빌드로 인해 프로덕션 시스템에서 허용할 수 없을 정도로 긴 기간 동안 작성자가 잠길 수 있습니다.
포스트그레SQL쓰기를 잠그지 않고 색인 구축을 지원합니다. 이 메소드는 다음을 지정하여 호출됩니다.동시옵션색인 범퍼카 토토. 이 옵션을 사용하면,PostgreSQL테이블을 두 번 스캔해야 하며, 추가적으로 잠재적으로 인덱스를 수정하거나 사용할 수 있는 모든 기존 트랜잭션이 종료될 때까지 기다려야 합니다. 따라서 이 방법은 표준 인덱스 구축보다 더 많은 총 작업이 필요하며 완료하는 데 훨씬 더 오랜 시간이 걸립니다. 그러나 이 방법을 사용하면 인덱스가 작성되는 동안 정상적인 작업을 계속할 수 있으므로 프로덕션 환경에서 새 인덱스를 추가하는 데 유용합니다. 물론 인덱스 생성으로 인한 추가 CPU 및 I/O 로드로 인해 다른 작업이 느려질 수 있습니다.
동시 인덱스 빌드에서 인덱스는 실제로 하나의 트랜잭션으로 시스템 카탈로그에 입력된 다음 두 개의 추가 트랜잭션에서 두 개의 테이블 스캔이 발생합니다. 각 테이블을 스캔하기 전에 인덱스 빌드는 테이블을 수정한 기존 트랜잭션이 종료될 때까지 기다려야 합니다. 두 번째 스캔 후 인덱스 빌드는 스냅샷이 있는 모든 트랜잭션을 기다려야 합니다(참조토토 사이트 : 문서 : 9.6 : 토토 사이트 제어)는 다른 테이블의 동시 인덱스 빌드 단계에서 사용되는 트랜잭션을 포함하여 두 번째 스캔 종료를 앞지릅니다. 그런 다음 마지막으로 인덱스를 사용할 준비가 된 것으로 표시할 수 있으며,색인 범퍼카 토토명령이 종료됩니다. 그러나 그럼에도 불구하고 인덱스는 쿼리에 즉시 사용 가능하지 않을 수 있습니다. 최악의 경우 인덱스 빌드 시작 이전에 트랜잭션이 존재하는 한 사용할 수 없습니다.
테이블을 스캔하는 동안 교착 상태 또는 고유 인덱스의 고유성 위반과 같은 문제가 발생하는 경우,색인 범퍼카 토토명령은 실패하지만 뒤에 남깁니다."잘못됨"색인. 이 인덱스는 불완전할 수 있으므로 쿼리 목적에서는 무시됩니다. 그러나 여전히 업데이트 오버헤드가 소모됩니다.psql \d명령은 다음과 같은 색인을 보고합니다.잘못됨:
postgres=# \d 탭
테이블 "public.tab"
칼럼 | 유형 | 수정자
------+---------+-----------
열 | 정수 |
인덱스:
"idx" btree(열) 잘못된
이러한 경우 권장되는 복구 방법은 인덱스를 삭제하고 다시 수행하는 것입니다.동시에 인덱스 생성. (또 다른 가능성은 다음을 사용하여 인덱스를 다시 작성하는 것입니다.REINDEX. 그러나 이후REINDEX동시 빌드를 지원하지 않으므로 이 옵션은 매력적이지 않을 것 같습니다.)
고유 인덱스를 동시에 구축할 때 또 다른 주의 사항은 두 번째 테이블 스캔이 시작될 때 다른 트랜잭션에 대해 고유성 제약 조건이 이미 시행되고 있다는 것입니다. 이는 인덱스를 사용할 수 있게 되기 전에 또는 인덱스 빌드가 결국 실패하는 경우에도 다른 쿼리에서 제약 조건 위반이 보고될 수 있음을 의미합니다. 또한 두 번째 스캔에서 실패가 발생하면,"잘못됨"색인은 이후에도 고유성 제약 조건을 계속 적용합니다.
표현식 인덱스와 부분 인덱스의 동시 빌드가 지원됩니다. 이러한 표현식을 평가할 때 오류가 발생하면 위에서 고유 제약 조건 위반에 대해 설명한 것과 유사한 동작이 발생할 수 있습니다.
정규 인덱스 빌드는 동일한 테이블에서 다른 일반 인덱스 빌드가 병렬로 발생하도록 허용하지만 테이블에서는 한 번에 하나의 동시 인덱스 빌드만 발생할 수 있습니다. 두 경우 모두 테이블에 대한 다른 유형의 스키마 수정은 허용되지 않습니다. 또 다른 차이점은 일반색인 범퍼카 토토명령은 트랜잭션 블록 내에서 수행될 수 있지만동시에 인덱스 생성할 수 없습니다.
참조토토 베이 : 문서 : 9.6 : 인덱스색인을 사용할 수 있는 시기, 사용하지 않는 시기, 유용할 수 있는 특정 상황에 대한 정보.
| 주의 |
|
해시 인덱스 작업은 현재 WAL에 기록되지 않으므로 다음을 사용하여 해시 인덱스를 다시 작성해야 할 수 있습니다.REINDEX기록되지 않은 변경 사항이 있는 경우 데이터베이스 충돌 후. 또한 해시 인덱스에 대한 변경 사항은 초기 기본 백업 이후 스트리밍이나 파일 기반 복제를 통해 복제되지 않으므로 이후 이를 사용하는 쿼리에 잘못된 답변을 제공합니다. 해시 인덱스도 특정 시점 복구 중에 제대로 복원되지 않습니다. 이러한 이유로 현재 해시 인덱스 사용은 권장되지 않습니다. |
현재 B-트리, GiST, GIN 및 BRIN 인덱스 방법만 다중 열 인덱스를 지원합니다. 기본적으로 최대 32개의 필드를 지정할 수 있습니다. (이 제한은 구축 시 변경될 수 있습니다.PostgreSQL.) 현재 B-트리만 고유 인덱스를 지원합니다.
안연산자 클래스인덱스의 각 열에 대해 지정할 수 있습니다. 연산자 클래스는 해당 열의 인덱스에서 사용할 연산자를 식별합니다. 예를 들어, 4바이트 정수의 B-트리 인덱스는int4_ops클래스; 이 연산자 클래스에는 4바이트 정수에 대한 비교 함수가 포함되어 있습니다. 실제로는 일반적으로 열의 데이터 유형에 대한 기본 연산자 클래스로 충분합니다. 연산자 클래스를 갖는 주요 요점은 일부 데이터 유형의 경우 의미 있는 순서가 두 개 이상 있을 수 있다는 것입니다. 예를 들어 복소수 데이터 유형을 절대값이나 실수부 기준으로 정렬하려고 할 수 있습니다. 데이터 유형에 대해 두 개의 연산자 클래스를 정의한 다음 인덱스를 만들 때 적절한 클래스를 선택하면 이를 수행할 수 있습니다. 연산자 클래스에 대한 자세한 내용은 다음을 참조하세요.PostgreSQL : 문서 : 9.6 : 스포츠 토토 결과 클래스 및 스포츠 토토 결과 가족그리고PostgreSQL : 문서화 : 9.6 : 토토 꽁 머니 대한 확장 프로그램.
순서 있는 스캔(현재는 B-트리만)을 지원하는 인덱스 방법의 경우 선택적 절ASC, 설명, NULL이 먼저임및/또는NULL이 마지막임을 지정하여 색인의 정렬 순서를 수정할 수 있습니다. 순서가 지정된 인덱스는 앞으로 또는 뒤로 검색할 수 있으므로 일반적으로 단일 열을 범퍼카 토토하는 것은 유용하지 않습니다.설명색인 — 해당 정렬 순서는 이미 일반 색인에서 사용할 수 있습니다. 이러한 옵션의 가치는 다음과 같은 혼합 순서 쿼리에서 요청한 정렬 순서와 일치하는 다중 열 인덱스를 생성할 수 있다는 것입니다.선택 ... ORDER BY x ASC, y DESC.NULLS지원이 필요한 경우 옵션이 유용합니다"null은 낮게 정렬됩니다"기본값이 아닌 동작"null은 높은 수준으로 정렬됩니다", 정렬 단계를 피하기 위해 색인에 의존하는 쿼리에서.
시스템은 정기적으로 테이블의 모든 열에 대한 통계를 수집합니다. 새로 생성된 비표현식 인덱스는 이러한 통계를 즉시 사용하여 인덱스의 유용성을 확인할 수 있습니다. 새로운 표현식 인덱스의 경우 다음을 실행해야 합니다.분석또는 다음을 기다리세요autovacuum 데몬이 인덱스에 대한 통계를 생성하기 위해 테이블을 분석합니다.
대부분의 색인 방법의 경우 색인 범퍼카 토토 속도는 다음 설정에 따라 다릅니다.maintenance_work_mem. 값이 클수록 인덱스 범퍼카 토토에 필요한 시간이 줄어듭니다. 단, 실제로 사용 가능한 메모리 양보다 더 크게 설정하지 않는 한, 이로 인해 머신이 스와핑을 하게 됩니다.
사용PostgreSQL : 문서 : 9.6 : 젠 토토 Index색인을 제거합니다.
이전 릴리스포스트그레SQL또한 R-트리 인덱스 방법이 있었습니다. 이 방법은 GiST 방법에 비해 큰 이점이 없기 때문에 제거되었습니다. 만일rtree 사용 중지정되었습니다.색인 범퍼카 토토다음과 같이 해석합니다요점 사용, 기존 데이터베이스를 GiST로 변환하는 작업을 단순화합니다.
열에 B-트리 인덱스를 범퍼카 토토하려면제목테이블에영화:
고유 인덱스 생성 title_idx ON 영화(제목);
표현식에 대한 색인을 생성하려면하위(제목), 효율적인 대소문자 구분 검색이 가능합니다.
영화에 대한 인덱스 생성((하위(제목)));
(이 예에서는 색인 이름을 생략하기로 선택했기 때문에 시스템은 일반적으로 이름을 선택합니다.films_lower_idx.)
기본이 아닌 데이터 정렬로 색인을 범퍼카 토토하려면:
CREATE INDEX title_idx_german ON 영화(제목 COLLATE "de_DE");
기본이 아닌 null 정렬 순서로 색인을 범퍼카 토토하려면:
INDEX title_idx_nulls_low ON 영화 생성(제목 NULLS FIRST);
기본값이 아닌 채우기 비율을 사용하여 색인을 생성하려면:
(fillfactor = 70)를 사용하여 영화(제목)에 고유 인덱스 title_idx 생성;
만들려면진빠른 업데이트가 비활성화된 인덱스:
GIN (위치) WITH (fastupdate = off)를 사용하여 document_table에 INDEX gin_idx 생성;
열에 색인을 범퍼카 토토하려면코드테이블에영화그리고 색인이 테이블스페이스에 상주하도록 합니다인덱스 공간:
CREATE INDEX code_idx ON 영화 (코드) TABLESPACE indexspace;
변환 함수의 결과에 상자 연산자를 효율적으로 사용할 수 있도록 포인트 속성에 GiST 인덱스를 생성하려면:
INDEX 포인트록 생성
ON 포인트 USING gist (box(location,location));
SELECT * FROM 포인트
WHERE 상자(위치, 위치) && '(0,0),(1,1)'::box;
테이블에 대한 쓰기를 잠그지 않고 색인을 생성하려면:
sales_table(수량)에 대해 동시에 sales_yangity_index 인덱스 생성;