CREATE INDEX — 새 색인 정의
[ 고유 ] 메이저 토토 사이트 생성 [ 동시 ] [ [ 존재하지 않는 경우 ]이름] 켜기 [ 전용 ]테이블_이름[ 사용 중방법] ( {열_이름| (표현) [ 대조조합] [opclass[ (opclass_parameter=값[, ... ] ) ] ] [ ASC | DESC ] [ NULLS 첫 번째 | 마지막 ] [, ...] ) [ 포함 (컬럼_이름[, ...] ) ] [ NULL [ 아님 ] 구별 ] [ 와 (storage_parameter[=값] [, ... ] ) ] [테이블스페이스테이블스페이스_이름] [어디에서술어]
색인 생성지정된 관계의 지정된 열(테이블 또는 구체화된 뷰일 수 있음)에 메이저 토토 사이트를 생성합니다. 메이저 토토 사이트는 주로 데이터베이스 성능을 향상시키는 데 사용됩니다(부적절하게 사용하면 성능이 저하될 수 있음).
인덱스의 키 필드는 열 이름으로 지정되거나 괄호 안에 작성된 표현식으로 지정됩니다. 인덱스 방법이 다중 열 인덱스를 지원하는 경우 여러 필드를 지정할 수 있습니다.
인덱스 필드는 테이블 행의 하나 이상의 열 값에서 계산된 표현식일 수 있습니다. 이 기능을 사용하면 기본 데이터의 일부 변환을 기반으로 데이터에 빠르게 액세스할 수 있습니다. 예를 들어, 다음에서 계산된 인덱스입니다.상단(열)다음 조항을 허용하겠습니다어디에서 상단(열) = 'JIM'색인을 사용합니다.
포스트그레SQL인덱스 메소드 B-tree, hash, GiST, SP-GiST, GIN 및 BRIN을 제공합니다. 사용자는 자신만의 색인 방법을 정의할 수도 있지만 이는 상당히 복잡합니다.
때어디절이 존재합니다. a부분 색인생성되었습니다. 부분 인덱스는 테이블의 일부(일반적으로 테이블의 나머지 부분보다 인덱싱에 더 유용한 부분)에 대한 항목만 포함하는 인덱스입니다. 예를 들어 청구되지 않은 주문과 청구되지 않은 주문이 모두 포함된 테이블이 있고 청구되지 않은 주문이 전체 테이블의 작은 부분을 차지하지만 자주 사용되는 섹션인 경우 해당 부분에 대해서만 인덱스를 생성하여 성능을 향상시킬 수 있습니다. 또 다른 가능한 응용 프로그램은 다음을 사용하는 것입니다.어디와고유테이블의 하위 집합에 고유성을 적용합니다. 참조PostgreSQL : 문서 : 17 : 11.8. 사설 토토 색인더 많은 토론을 원하시면.
다음에 사용된 표현어디에서절은 기본 테이블의 열만 참조할 수 있지만 인덱싱되는 열뿐만 아니라 모든 열을 사용할 수 있습니다. 현재 하위 쿼리와 집계 표현식도 금지됩니다.어디에서. 표현식인 인덱스 필드에도 동일한 제한사항이 적용됩니다.
색인 정의에 사용되는 모든 함수와 연산자는 다음과 같아야 합니다.“불변”, 즉 결과는 인수에만 의존해야 하며 외부 영향(예: 다른 테이블의 내용이나 현재 시간)에 의존해서는 안 됩니다. 이러한 제한을 통해 인덱스 동작이 잘 정의됩니다. 인덱스 표현식에서 사용자 정의 함수를 사용하려면 또는어디절, 함수를 생성할 때 불변으로 표시하는 것을 잊지 마세요.
고유메이저 토토 사이트가 생성되고(데이터가 이미 존재하는 경우) 데이터가 추가될 때마다 시스템이 테이블에서 중복된 값을 확인하도록 합니다. 중복 항목이 발생하는 데이터를 삽입하거나 업데이트하려고 하면 오류가 발생합니다.
고유 인덱스가 파티션된 테이블에 적용될 때 추가 제한이 적용됩니다. 참조테이블 생성.
동시이 옵션을 사용하면,PostgreSQL테이블에 대한 동시 삽입, 업데이트 또는 삭제를 방지하는 잠금을 사용하지 않고 인덱스를 구축합니다. 반면 표준 인덱스 빌드는 완료될 때까지 테이블에 대한 쓰기(읽기는 제외)를 잠급니다. 이 옵션을 사용할 때 주의해야 할 몇 가지 주의 사항이 있습니다. — 참조동시에 색인 작성아래.
임시 테이블의 경우,색인 생성다른 세션이 액세스할 수 없으므로 항상 비동시적이며, 비동시 인덱스 생성이 더 저렴합니다.
존재하지 않는 경우동일한 이름을 가진 관계가 이미 존재하는 경우 오류를 발생시키지 마십시오. 이 경우 통지가 발행됩니다. 기존 인덱스가 생성되었을 인덱스와 유사하다는 보장은 없습니다. 다음과 같은 경우 인덱스 이름이 필요합니다.존재하지 않는 경우지정되었습니다.
포함선택사항포함절은 색인에 포함될 열 목록을 다음과 같이 지정합니다.비키열. 키가 아닌 열은 인덱스 스캔 검색 제한에 사용할 수 없으며 인덱스에 의해 적용되는 고유성 또는 제외 제약 조건의 목적으로 무시됩니다. 그러나 인덱스 전용 스캔은 인덱스 항목에서 직접 사용할 수 있으므로 인덱스 테이블을 방문하지 않고도 키가 아닌 열의 내용을 반환할 수 있습니다. 따라서 키가 아닌 열을 추가하면 다른 방법으로는 사용할 수 없는 쿼리에 대해 인덱스 전용 스캔을 사용할 수 있습니다.
키가 아닌 열, 특히 넓은 열을 색인에 추가하는 것에 대해서는 보수적인 것이 좋습니다. 메이저 토토 사이트 튜플이 메이저 토토 사이트 유형에 허용되는 최대 크기를 초과하면 데이터 삽입이 실패합니다. 어떤 경우든 키가 아닌 열은 메이저 토토 사이트 테이블의 데이터를 복제하고 메이저 토토 사이트 크기를 늘리므로 검색 속도가 느려질 수 있습니다. 또한 키 열이 아닌 메이저 토토 사이트에는 B-트리 중복 제거가 사용되지 않습니다.
에 나열된 열포함절에는 적절한 연산자 클래스가 필요하지 않습니다. 절에는 해당 액세스 방법에 대해 정의된 연산자 클래스가 없는 데이터 유형의 열이 포함될 수 있습니다.
식은 인덱스 전용 스캔에 사용할 수 없으므로 포함된 열로 지원되지 않습니다.
현재 B-tree, GiST 및 SP-GiST 인덱스 액세스 방법은 이 기능을 지원합니다. 이 인덱스에서는에 나열된 열의 값이포함절은 힙 튜플에 해당하는 리프 튜플에 포함되지만 트리 탐색에 사용되는 상위 수준 인덱스 항목에는 포함되지 않습니다.
이름생성될 색인의 이름입니다. 여기에는 스키마 이름을 포함할 수 없습니다. 인덱스는 항상 상위 테이블과 동일한 스키마에 생성됩니다. 인덱스 이름은 해당 스키마에 있는 다른 관계(테이블, 시퀀스, 인덱스, 뷰, 구체화된 뷰 또는 외부 테이블)의 이름과 구별되어야 합니다. 이름이 생략된 경우,PostgreSQL상위 테이블의 이름과 색인화된 열 이름을 기반으로 적절한 이름을 선택합니다.
만테이블이 분할된 경우 파티션에 메이저 토토 사이트 생성을 반복하지 않음을 나타냅니다. 기본값은 재귀입니다.
테이블_이름인덱싱할 테이블의 이름(스키마 한정 가능).
방법사용할 인덱스 방법의 이름. 선택 사항은 다음과 같습니다.브트리, 해시, 요점, spgist, 진, 브린또는 다음과 같은 사용자 설치 액세스 방법PostgreSQL : 문서 : 17 : F.6. 블룸 - 블룸 필터 토토 핫 액세스 방법. 기본 방법은 다음과 같습니다.브트리.
열_이름테이블의 열 이름.
표현테이블의 하나 이상의 열을 기반으로 하는 표현식입니다. 표현식은 일반적으로 구문에 표시된 대로 괄호로 묶어 작성해야 합니다. 다만, 함수호출 형태의 경우에는 괄호를 생략할 수 있습니다.
조합색인에 사용할 데이터 정렬의 이름. 기본적으로 인덱스는 인덱싱할 열에 대해 선언된 데이터 정렬 또는 인덱스할 표현식의 결과 데이터 정렬을 사용합니다. 기본이 아닌 데이터 정렬이 포함된 인덱스는 기본이 아닌 데이터 정렬을 사용하는 식과 관련된 쿼리에 유용할 수 있습니다.
opclass연산자 클래스의 이름. 자세한 내용은 아래를 참조하세요.
opclass_parameter연산자 클래스 매개변수의 이름. 자세한 내용은 아래를 참조하세요.
ASC오름차순 정렬 순서를 지정합니다(기본값).
설명내림차순 정렬 순서를 지정합니다.
NULL이 먼저임null이 null이 아닌 항목보다 먼저 정렬되도록 지정합니다. 다음의 경우 기본값입니다.설명지정되었습니다.
NULL이 마지막임null이 null이 아닌 항목 다음에 정렬되도록 지정합니다. 다음의 경우 기본값입니다.설명지정되지 않았습니다.
NULL이 구별됨NULL은 구별되지 않음고유 인덱스에 대해 Null 값을 고유한(같지 않은) 것으로 간주해야 하는지 여부를 지정합니다. 기본값은 고유 인덱스이므로 열에 여러 null 값이 포함될 수 있다는 것입니다.
storage_parameter인덱스 메소드별 저장 매개변수의 이름. 참조인덱스 저장 매개변수자세한 내용은 아래를 참조하세요.
테이블스페이스_이름메이저 토토 사이트를 생성할 테이블스페이스입니다. 지정하지 않은 경우,default_tablespace상담되었거나temp_tablespaces임시 테이블의 메이저 토토 사이트용.
술어부분 인덱스에 대한 제약 조건 표현식입니다.
선택사항함께절이 지정함저장 매개변수색인용. 각 인덱스 메소드에는 고유한 허용된 저장 매개변수 세트가 있습니다.
B-트리, 해시, GiST 및 SP-GiST 인덱스 방법은 모두 이 매개변수를 허용합니다:
채우기 요소 (정수) #인덱스 방법이 인덱스 페이지를 얼마나 가득 채우려고 시도하는지 제어합니다. B-트리의 경우 리프 페이지는 초기 인덱스 구축 중에 그리고 오른쪽에서 인덱스를 확장할 때(새 가장 큰 키 값 추가) 이 백분율로 채워집니다. 나중에 페이지가 완전히 가득 차면 페이지가 분할되어 온디스크 인덱스 구조가 조각화됩니다. B-트리는 기본 채우기 비율 90을 사용하지만 10에서 100 사이의 정수 값을 선택할 수 있습니다.
많은 삽입 및/또는 업데이트가 예상되는 테이블의 B-트리 인덱스는 다음의 채우기 요소 설정을 낮추면 이점을 얻을 수 있습니다.색인 생성시간(테이블에 대량 로드 후). 50 - 90 범위의 값이 유용할 수 있습니다.“부드럽게”the비율25100_25351섹션 65.1.4.2일부 소유에 의존합니다“추가”저장할 페이지 공간“추가”튜플 버전이므로 fillfactor의 영향을 받을 수 있습니다(그 효과는 일반적으로 중요하지 않지만).
다른 특별한 경우에는 채우기 비율을 100으로 늘리는 것이 유용할 수 있습니다.색인 생성시간을 활용하여 공간 활용을 극대화합니다. 테이블이 정적이라는 것이 완전히 확신되는 경우(즉, 삽입이나 업데이트의 영향을 받지 않는다는 점)에만 이를 고려해야 합니다. 100의 채우기 요소 설정은 위험합니다.해를 끼치는성능: 몇 번의 업데이트나 삽입만으로도 갑자기 페이지가 분할될 수 있습니다.
다른 색인 방법은 채우기 요소를 다르지만 대략 유사한 방식으로 사용합니다. 기본 채우기 요소는 메서드마다 다릅니다.
B-트리 인덱스는 추가로 이 매개변수를 허용합니다:
deduplicate_items (부울) #다음 항목에 설명된 B-트리 중복 제거 기술의 사용을 제어합니다.섹션 65.1.4.3. 으로 설정켜짐또는꺼짐최적화를 활성화 또는 비활성화합니다. (대체 철자법)켜짐그리고꺼짐설명된 대로 허용됩니다PostgreSQL : 문서 : 17 : 19.1. 매개 스포츠 토토 사이트 설정.) 기본값은켜짐.
돌아가는 중deduplicate_items꺼짐 경유색인 변경향후 삽입이 중복 제거를 실행하는 것을 방지하지만 그 자체로 기존 게시 목록 튜플이 표준 튜플 표현을 사용하도록 만들지는 않습니다.
GiST 인덱스는 추가로 이 매개변수를 허용합니다:
버퍼링 (열거형) #에 설명된 버퍼링 빌드 기술을 사용할지 여부를 제어합니다.섹션 65.2.4.1은 색인을 작성하는 데 사용됩니다. 와 함께꺼짐버퍼링이 비활성화되었습니다.켜짐활성화되어 있으며자동처음에는 비활성화되어 있지만 메이저 토토 사이트 크기에 도달하면 즉시 활성화됩니다.유효_캐시_크기. 기본값은자동. 정렬된 빌드가 가능하다면 버퍼링된 빌드 대신 사용됩니다.버퍼링=ON지정되었습니다.
GIN 색인은 다음 매개변수를 허용합니다:
빠른 업데이트 (부울) #에 설명된 빠른 업데이트 기술의 사용을 제어합니다.섹션 65.4.4.1. 켜짐빠른 업데이트를 활성화합니다.꺼짐비활성화합니다. 기본값은켜짐.
돌아가는 중빠른 업데이트꺼짐 경유색인 변경향후 삽입이 보류 중인 색인 항목 목록에 들어가는 것을 방지하지만 자체적으로 기존 항목을 플러시하지는 않습니다. 당신은 원할 수도 있습니다진공테이블 또는 전화gin_clean_pending_list나중에 보류 목록이 비워졌는지 확인하는 함수입니다.
gin_pending_list_limit (정수) #전체 설정을 재정의함gin_pending_list_limit이 색인에 대한 것입니다. 이 값은 킬로바이트 단위로 지정됩니다.
브린색인은 다음 매개변수를 허용합니다:
페이지당_범위 (정수) #a의 각 항목에 대해 하나의 블록 범위를 구성하는 테이블 블록의 수를 정의합니다.브린색인(참조섹션 65.5.1자세한 내용은). 기본값은128.
자동 요약 (부울) #다음 페이지에서 삽입이 감지될 때마다 이전 페이지 범위에 대해 요약 실행을 대기열에 넣을지 여부를 정의합니다(참조섹션 65.5.1.1자세한 내용은). 기본값은꺼짐.
색인을 생성하면 데이터베이스의 일반 작동을 방해할 수 있습니다. 일반적으로PostgreSQL인덱싱할 테이블을 쓰기에 대해 잠그고 테이블을 한 번 스캔하여 전체 인덱스 빌드를 수행합니다. 다른 트랜잭션은 여전히 테이블을 읽을 수 있지만 테이블의 행을 삽입, 업데이트 또는 삭제하려고 하면 인덱스 구축이 완료될 때까지 차단됩니다. 시스템이 실제 프로덕션 데이터베이스인 경우 이는 심각한 영향을 미칠 수 있습니다. 매우 큰 테이블은 색인을 생성하는 데 많은 시간이 걸릴 수 있으며, 작은 테이블의 경우에도 색인 빌드로 인해 프로덕션 시스템에서 허용할 수 없을 정도로 긴 기간 동안 작성자가 잠길 수 있습니다.
포스트그레SQL쓰기를 잠그지 않고 색인 작성을 지원합니다. 이 메소드는 다음을 지정하여 호출됩니다.동시옵션색인 생성. 이 옵션을 사용하면,PostgreSQL은 테이블을 두 번 스캔해야 하며, 추가적으로 잠재적으로 인덱스를 수정하거나 사용할 수 있는 모든 기존 트랜잭션이 종료될 때까지 기다려야 합니다. 따라서 이 방법은 표준 인덱스 구축보다 더 많은 총 작업이 필요하며 완료하는 데 훨씬 더 오랜 시간이 걸립니다. 그러나 이 방법을 사용하면 인덱스가 작성되는 동안 정상적인 작업을 계속할 수 있으므로 프로덕션 환경에서 새 인덱스를 추가하는 데 유용합니다. 물론 인덱스 생성으로 인한 추가 CPU 및 I/O 로드로 인해 다른 작업이 느려질 수 있습니다.
동시 인덱스 빌드에서 인덱스는 실제로 다음과 같이 입력됩니다.“잘못됨”인덱스를 하나의 트랜잭션으로 시스템 카탈로그에 추가하면 두 개의 추가 트랜잭션에서 두 개의 테이블 스캔이 발생합니다. 각 테이블을 스캔하기 전에 인덱스 빌드는 테이블을 수정한 기존 트랜잭션이 종료될 때까지 기다려야 합니다. 두 번째 스캔 후 인덱스 빌드는 스냅샷이 있는 모든 트랜잭션을 기다려야 합니다(참조PostgreSQL : 문서 : 17 : 13 장. 스포츠 토토 사이트 제어)은 관련된 인덱스가 부분적이거나 단순 열 참조가 아닌 열을 포함하는 경우 다른 테이블에 대한 동시 인덱스 빌드의 모든 단계에서 사용되는 트랜잭션을 포함하여 두 번째 스캔 종료를 앞지릅니다. 그런 다음 마지막으로 색인을 표시할 수 있습니다.“유효”사용 준비가 완료되었으며색인 생성명령이 종료됩니다. 그러나 그럼에도 불구하고 인덱스는 쿼리에 즉시 사용 가능하지 않을 수 있습니다. 최악의 경우 인덱스 빌드 시작 이전에 트랜잭션이 존재하는 한 사용할 수 없습니다.
테이블을 스캔하는 동안 교착 상태 또는 고유 인덱스의 고유성 위반과 같은 문제가 발생하면,색인 생성명령은 실패하지만 뒤에 남깁니다.“잘못됨”색인. 이 메이저 토토 사이트는 불완전할 수 있으므로 쿼리 목적에서는 무시됩니다. 그러나 여전히 업데이트 오버헤드가 소모됩니다.psql \d명령은 다음과 같은 색인을 보고합니다.잘못됨:
postgres=# \d 탭
테이블 "public.tab"
칼럼 | 유형 | 데이터 정렬 | 널 입력 가능 | 기본값
---------+---------+------------+----------+---------
열 | 정수 | | |
인덱스:
"idx" btree(열) 잘못된
이러한 경우 권장되는 복구 방법은 인덱스를 삭제하고 다시 수행하는 것입니다.동시에 인덱스 생성. (또 다른 가능성은 다음을 사용하여 인덱스를 다시 작성하는 것입니다.동시에 REINDEX 인덱스 생성).
고유 인덱스를 동시에 구축할 때 또 다른 주의 사항은 두 번째 테이블 스캔이 시작될 때 다른 트랜잭션에 대해 고유성 제약 조건이 이미 시행되고 있다는 것입니다. 이는 인덱스를 사용할 수 있게 되기 전에 또는 인덱스 빌드가 결국 실패하는 경우에도 다른 쿼리에서 제약 조건 위반이 보고될 수 있음을 의미합니다. 또한 두 번째 스캔에서 실패가 발생하면,“잘못됨”색인은 이후에도 고유성 제약 조건을 계속 적용합니다.
표현식 인덱스와 부분 인덱스의 동시 빌드가 지원됩니다. 이러한 표현식을 평가할 때 오류가 발생하면 위에서 고유 제약 조건 위반에 대해 설명한 것과 유사한 동작이 발생할 수 있습니다.
일반 인덱스 빌드를 사용하면 동일한 테이블에서 다른 일반 인덱스 빌드가 동시에 발생할 수 있지만 테이블에서는 한 번에 하나의 동시 인덱스 빌드만 발생할 수 있습니다. 두 경우 모두 인덱스가 작성되는 동안 테이블의 스키마 수정은 허용되지 않습니다. 또 다른 차이점은 일반색인 생성명령은 트랜잭션 블록 내에서 수행될 수 있지만동시에 인덱스 생성할 수 없습니다.
파티션된 테이블의 인덱스에 대한 동시 빌드는 현재 지원되지 않습니다. 그러나 분할된 테이블에 대한 쓰기가 잠기는 시간을 줄이기 위해 각 파티션에 개별적으로 인덱스를 동시에 구축한 다음 최종적으로 비동시적으로 분할된 인덱스를 생성할 수 있습니다. 이 경우 분할된 인덱스를 구축하는 것은 메타데이터 전용 작업입니다.
참조토토 : 문서 : 17 : 11 장. 인덱스색인을 사용할 수 있는 시기, 사용하지 않는 시기, 유용할 수 있는 특정 상황에 대한 정보.
현재 B-트리, GiST, GIN 및 BRIN 인덱스 방법만 다중 키 열 인덱스를 지원합니다. 여러 개의 키 열이 있을 수 있는지 여부는 다음과 무관합니다.포함열을 색인에 추가할 수 있습니다. 인덱스는 다음을 포함하여 최대 32개의 열을 가질 수 있습니다.포함열. (이 제한은 구축 시 변경될 수 있습니다.PostgreSQL.) 현재 B-트리만 고유 인덱스를 지원합니다.
안연산자 클래스선택적 매개변수를 사용하여 인덱스의 각 열에 대해 지정할 수 있습니다. 연산자 클래스는 해당 열의 인덱스에서 사용할 연산자를 식별합니다. 예를 들어, 4바이트 정수의 B-트리 인덱스는int4_ops클래스; 이 연산자 클래스에는 4바이트 정수에 대한 비교 함수가 포함되어 있습니다. 실제로는 일반적으로 열의 데이터 유형에 대한 기본 연산자 클래스로 충분합니다. 연산자 클래스를 갖는 주요 요점은 일부 데이터 유형의 경우 의미 있는 순서가 두 개 이상 있을 수 있다는 것입니다. 예를 들어 복소수 데이터 유형을 절대값이나 실수부 기준으로 정렬하려고 할 수 있습니다. 데이터 유형에 대해 두 개의 연산자 클래스를 정의한 다음 인덱스를 생성할 때 적절한 클래스를 선택하면 이를 수행할 수 있습니다. 연산자 클래스에 대한 자세한 내용은 다음을 참조하세요.PostgreSQL : 문서 : 17 : 11.10. 토토 결과 수업 및 토토 결과 가족그리고PostgreSQL : 문서 : 17 : 36.16. 와이즈 토토에 대한 확장 인터페이스.
언제색인 생성는 분할된 테이블에서 호출되며 기본 동작은 모든 파티션에 대해 반복하여 모든 파티션에 일치하는 인덱스가 있는지 확인하는 것입니다. 각 파티션을 먼저 검사하여 동등한 인덱스가 이미 존재하는지 확인하고, 존재하는 경우 해당 인덱스는 생성 중인 인덱스에 파티션 인덱스로 연결되어 상위 인덱스가 됩니다. 일치하는 인덱스가 없으면 새 인덱스가 생성되고 자동으로 연결됩니다. 각 파티션의 새 인덱스 이름은 명령에 인덱스 이름이 지정되지 않은 것처럼 결정됩니다. 만약만옵션이 지정되고 재귀가 수행되지 않으며 인덱스가 유효하지 않은 것으로 표시됩니다. (색인 변경...파티션 연결모든 파티션이 일치하는 인덱스를 획득하면 인덱스가 유효하다고 표시합니다.) 그러나 나중에 다음을 사용하여 생성되는 모든 파티션은테이블 생성 ... 파티션여부에 관계없이 자동으로 일치하는 색인을 갖게 됩니다.만지정되었습니다.
순서 있는 스캔(현재는 B-트리만)을 지원하는 인덱스 방법의 경우 선택적 절ASC, 설명, NULL이 먼저임및/또는NULL이 마지막임색인의 정렬 순서를 수정하도록 지정할 수 있습니다. 순서가 지정된 인덱스는 앞으로 또는 뒤로 검색할 수 있으므로 일반적으로 단일 열을 생성하는 것은 유용하지 않습니다.설명색인 — 해당 정렬 순서는 이미 일반 색인에서 사용할 수 있습니다. 이러한 옵션의 가치는 다음과 같은 혼합 순서 쿼리에서 요청한 정렬 순서와 일치하는 다중 열 인덱스를 생성할 수 있다는 것입니다.선택 ... ORDER BY x ASC, y DESC.NULLS지원이 필요한 경우 옵션이 유용합니다“null은 낮게 정렬”기본값이 아닌 동작“null은 높은 수준으로 정렬”, 정렬 단계를 피하기 위해 색인에 의존하는 쿼리에서.
시스템은 정기적으로 테이블의 모든 열에 대한 통계를 수집합니다. 새로 생성된 비표현식 인덱스는 이러한 통계를 즉시 사용하여 인덱스의 유용성을 확인할 수 있습니다. 새로운 표현식 인덱스의 경우 다음을 실행해야 합니다.분석또는 다음을 기다리세요autovacuum 데몬이 인덱스에 대한 통계를 생성하기 위해 테이블을 분석합니다.
그동안색인 생성실행 중입니다.검색_경로임시로 변경됨pg_catalog, pg_temp.
대부분의 색인 방법의 경우 색인 생성 속도는 다음 설정에 따라 다릅니다.maintenance_work_mem. 값이 클수록 메이저 토토 사이트 생성에 필요한 시간이 줄어듭니다. 단, 실제로 사용 가능한 메모리 양보다 더 크게 설정하지 않는 한, 이로 인해 머신이 스와핑을 하게 됩니다.
포스트그레SQL테이블 행을 더 빠르게 처리하기 위해 여러 CPU를 활용하면서 인덱스를 구축할 수 있습니다. 이 기능은 다음과 같이 알려져 있습니다.병렬 메이저 토토 사이트 빌드. 병렬 인덱스 구축을 지원하는 인덱스 방식(현재 B-tree, GIN, BRIN)의 경우,maintenance_work_mem은 시작된 작업자 프로세스 수에 관계없이 각 인덱스 빌드 작업 전체에서 사용할 수 있는 최대 메모리 양을 지정합니다. 일반적으로 비용 모델은 요청해야 하는 작업자 프로세스 수(있는 경우)를 자동으로 결정합니다.
병렬 메이저 토토 사이트 빌드는 증가로 인해 이점을 얻을 수 있습니다.maintenance_work_mem동등한 직렬 색인 빌드는 거의 또는 전혀 이익을 얻지 못할 것입니다. 참고하세요maintenance_work_mem병렬 작업자는 최소한 a32MB전체의 점유율maintenance_work_mem예산. 남은 것도 있어야합니다32MB리더 프로세스를 위해 공유합니다. 증가max_parallel_maintenance_workers더 많은 작업자를 사용할 수 있으므로 메이저 토토 사이트 빌드가 아직 I/O 바인딩되지 않은 한 메이저 토토 사이트 생성에 필요한 시간이 줄어듭니다. 물론 유휴 상태가 될 충분한 CPU 용량도 있어야 합니다.
값 설정 중parallel_workers경유테이블 변경A가 요청할 병렬 작업자 프로세스 수를 직접 제어합니다.색인 생성테이블 반대쪽. 이는 비용 모델을 완전히 우회하여 방지합니다.maintenance_work_mem요청된 병렬 작업자 수에 영향을 미치지 않습니다. 설정parallel_workers0을 통해테이블 변경모든 경우에 테이블에서 병렬 메이저 토토 사이트 빌드를 비활성화합니다.
초기화하고 싶을 수도 있습니다parallel_workers메이저 토토 사이트 빌드 조정의 일부로 설정한 후. 이렇게 하면 쿼리 계획이 실수로 변경되는 것을 방지할 수 있습니다.parallel_workers영향을 끼치다모두병렬 테이블 스캔.
그동안색인 생성와 함께동시옵션은 특별한 제한 없이 병렬 빌드를 지원하며 실제로는 첫 번째 테이블 스캔만 병렬로 수행됩니다.
사용메이저 토토 사이트 삭제색인을 제거합니다.
장기 실행 트랜잭션과 마찬가지로색인 생성테이블에서 동시 제거할 수 있는 튜플에 영향을 줄 수 있음진공다른 테이블에.
이전 릴리스PostgreSQL또한 R-트리 인덱스 방법이 있었습니다. 이 방법은 GiST 방법에 비해 큰 이점이 없기 때문에 제거되었습니다. 만일rtree 사용 중지정되었습니다.색인 생성다음과 같이 해석합니다요점 사용, 기존 데이터베이스를 GiST로 변환하는 작업을 단순화합니다.
각 백엔드 실행 중색인 생성다음에 진행 상황을 보고할 예정입니다.pg_stat_progress_create_index보기. 참조섹션 27.4.4자세한 내용은.
열에 고유한 B-트리 인덱스를 생성하려면제목테이블에서영화:
고유 인덱스 생성 title_idx ON 영화(제목);
열에 고유한 B-트리 인덱스를 생성하려면제목포함된 열 포함감독그리고평가테이블에영화:
고유 인덱스 생성 title_idx ON 영화(제목) INCLUDE(감독, 등급);
중복 제거가 비활성화된 B-트리 색인을 생성하려면:
CREATE INDEX title_idx ON 영화(제목) WITH (deduplicate_items = off);
표현식에 대한 색인을 생성하려면하위(제목), 효율적인 대소문자 구분 검색이 가능합니다.
영화에 대한 인덱스 생성((하위(제목)));
(이 예에서는 색인 이름을 생략하기로 선택했기 때문에 시스템은 일반적으로 이름을 선택합니다.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 인덱스 생성;
색인 생성은PostgreSQL언어 확장. SQL 표준에는 메이저 토토 사이트에 대한 조항이 없습니다.
문서에 올바르지 않은 내용이 있으면 일치하지 않습니다. 특정 기능에 대한 경험이 있거나 추가 설명이 필요한 경우 이용해주세요이 양식문서 문제를 보고합니다.