| 포스트그레SQL 8.3.23 문서 | ||||
|---|---|---|---|---|
| 이전 | 빠르게 뒤로 | 102PostgreSQL: 문서: 8.3: 인덱스 생성57 | 다음 | |
[ 고유 ] 인덱스 생성 [ 동시 ]이름켜짐테이블[ 사용 중방법 ]
( { 열 | ( 표현 ) } [ opclass] [ ASC | DESC ] [ NULLS 첫 번째 | 마지막 ] [, ...] )
[ 와 (storage_parameter = 값[, ... ] ) ]
[테이블스페이스테이블스페이스]
[어디에서술어 ]
범퍼카 토토 생성범퍼카 토토을 구성합니다이름지정된 테이블에. 인덱스는 주로 데이터베이스 성능을 향상시키는 데 사용됩니다. (부적절하게 사용하면 성능이 저하될 수 있습니다.)
색인의 키 필드는 열 이름으로 지정됩니다. 또는 괄호 안에 표현을 써도 됩니다. 다중 인덱스 방법이 다중 열을 지원하는 경우 필드를 지정할 수 있습니다. 색인.
색인 필드는 값에서 계산된 표현식일 수 있습니다. 테이블 행의 하나 이상의 열 중 하나입니다. 이 기능을 사용할 수 있습니다 일부 변환을 기반으로 데이터에 대한 빠른 액세스를 얻으려면 기본 데이터. 예를 들어, 다음에서 계산된 인덱스입니다.상단(열)다음 조항을 허용하겠습니다어디에서 상단(열) = 'JIM'범퍼카 토토을 사용합니다.
포스트그레SQL색인 제공 B-트리, 해시, GiST 및 GIN 방법. 사용자는 또한 자신의 자신만의 인덱스 메소드가 있지만 상당히 복잡합니다.
때어디에서절이 존재합니다. a부분 범퍼카 토토생성되었습니다. 부분적인 인덱스는 특정 부분에 대한 항목만 포함하는 인덱스입니다. 일반적으로 테이블보다 인덱싱에 더 유용한 부분입니다. 나머지 테이블. 예를 들어, 다음과 같은 테이블이 있다면 청구되지 않은 주문과 청구되지 않은 주문이 모두 포함되어 있습니다. 주문은 전체 테이블에서 작은 부분을 차지하지만 자주 사용되는 섹션이므로 다음을 생성하여 성능을 향상시킬 수 있습니다. 해당 부분에 대한 색인입니다. 또 다른 가능한 적용은 다음과 같습니다. 사용어디와고유의 하위 집합에 고유성을 적용합니다. 테이블. 참조PostgreSQL : 문서 : 8.3 : 부분 토토 꽁 머니용 추가 논의.
다음에 사용된 표현어디에서절은 기본 테이블의 열만 참조할 수 있지만 인덱싱되는 열뿐만 아니라 모든 열을 사용할 수 있습니다. 현재, 하위 쿼리 및 집계 표현식도 금지됩니다.어디에서. 동일한 제한사항이 다음에도 적용됩니다. 표현식인 인덱스 필드입니다.
색인 정의에 사용되는 모든 함수와 연산자는 다음을 충족해야 합니다. 수"불변", 즉 결과입니다. 그들의 주장에만 의존해야 하며 결코 외부에 의존해서는 안 됩니다. 영향(예: 다른 테이블의 내용이나 현재 시간). 이 제한은 인덱스의 동작이 다음과 같도록 보장합니다. 잘 정의되어 있습니다. 인덱스에서 사용자 정의 함수를 사용하려면 표현 또는어디절, 기억하세요 함수를 생성할 때 함수를 변경할 수 없도록 표시하세요.
시스템이 다음에서 중복된 값을 확인하도록 합니다. 인덱스가 생성될 때의 테이블(데이터가 이미 존재하는 경우) 및 데이터가 추가될 때마다. 데이터를 삽입하거나 업데이트하려고 시도합니다. 중복된 항목이 발생하면 오류.
이 옵션을 사용하면,PostgreSQL색인을 구축할 것입니다 동시 삽입을 방지하는 잠금을 사용하지 않고 테이블을 업데이트하거나 삭제합니다. 반면 표준 인덱스 빌드는 다음까지 테이블에 대한 쓰기(읽기는 제외)를 잠급니다. 끝났습니다. 언제 주의해야 할 몇 가지 주의 사항이 있습니다. 이 옵션 사용 — 참조건물 동시에 인덱스.
생성될 색인의 이름. 스키마 이름은 사용할 수 없습니다. 여기에 포함되어야 합니다. 인덱스는 항상 같은 위치에 생성됩니다. 스키마를 상위 테이블로 사용합니다.
테이블의 이름(스키마 한정) 색인이 생성되었습니다.
사용할 색인 방법의 이름. 선택 사항은 다음과 같습니다.브트리, 해시, 요점및진. 기본 방법은 다음과 같습니다.브트리.
테이블의 열 이름.
테이블의 하나 이상의 열을 기반으로 한 표현식입니다. 표현은 일반적으로 주변에 써야 합니다. 구문에 표시된 대로 괄호를 사용합니다. 그러나 표현식의 형식이 다음과 같은 경우 괄호를 생략할 수 있습니다. 함수 호출의.
연산자 클래스의 이름. 자세한 내용은 아래를 참조하세요. 세부사항.
오름차순 정렬 순서를 지정합니다(이는 기본값).
내림차순 정렬 순서를 지정합니다.
null이 null이 아닌 항목보다 먼저 정렬되도록 지정합니다. 이것은 기본값은 다음과 같습니다.설명이다 지정되었습니다.
null이 null이 아닌 항목 다음에 정렬되도록 지정합니다. 이것은 기본값은 다음과 같습니다.설명아님 지정되었습니다.
인덱스 메소드별 저장 매개변수의 이름. 자세한 내용은 아래를 참조하세요.
인덱스를 생성할 테이블스페이스입니다. 그렇지 않은 경우 지정됨,default_tablespace상담을 받거나temp_tablespaces임시 테이블의 색인용.
부분 범퍼카 토토에 대한 제약 조건 표현식입니다.
그위드절은 지정할 수 있음저장 매개변수인덱스용. 각각 인덱스 메소드는 자체적으로 허용된 저장 공간 세트를 가질 수 있습니다. 매개변수. 내장된 인덱스 메소드는 모두 단일 인덱스 메소드를 허용합니다. 매개변수:
색인의 채우기 비율은 다음의 백분율입니다. 인덱스 메소드가 얼마나 가득 차도록 시도할지 결정합니다. 인덱스 페이지. B-트리의 경우 리프 페이지는 다음으로 채워집니다. 초기 인덱스 구축 중 백분율, 그리고 오른쪽의 인덱스를 확장합니다(가장 큰 키 값). 만약에 나중에 페이지가 완전히 가득 차면 페이지가 가득 차게 됩니다. 분할되어 지수의 점진적인 저하로 이어집니다. 효율성. B-트리는 기본 채우기 비율 90을 사용하지만 10에서 100 사이의 값을 선택할 수 있습니다. 테이블이 static이면 fillfactor 100이 가장 좋습니다. 인덱스의 물리적 크기이지만, 많이 업데이트된 테이블의 경우 fillfactor가 작을수록 필요성을 최소화하는 것이 좋습니다. 페이지 분할. 다른 인덱스 방법은 fillfactor를 사용합니다. 다르지만 대략 유사한 방식; 기본값 채우기 비율은 방법마다 다릅니다.
범퍼카 토토을 생성하면 일반적인 작업을 방해할 수 있습니다. 데이터베이스. 일반적으로PostgreSQL인덱싱할 테이블을 쓰기에 대해 잠그고 다음을 수행합니다. 테이블을 한 번 스캔하여 전체 인덱스를 구축합니다. 기타 트랜잭션은 여전히 테이블을 읽을 수 있지만, 차단할 테이블의 행을 삽입, 업데이트 또는 삭제합니다. 인덱스 빌드가 완료될 때까지. 이로 인해 심각한 문제가 발생할 수 있습니다. 시스템이 라이브 프로덕션 데이터베이스인 경우 효과가 발생합니다. 매우 크다 테이블을 인덱싱하는 데 많은 시간이 걸릴 수 있으며, 규모가 작은 경우에도 테이블, 인덱스 빌드는 다음 기간 동안 작성자를 잠글 수 있습니다. 프로덕션 시스템에서는 용납할 수 없을 정도로 깁니다.
PostgreSQL지원 쓰기를 잠그지 않고 인덱스를 구축합니다. 이 방법은 를 지정하여 호출됩니다.동시옵션범퍼카 토토 생성. 이 때 옵션이 사용되었습니다.PostgreSQL테이블을 두 번 스캔해야 하며 추가로 잠재적으로 사용할 수 있는 모든 기존 트랜잭션을 기다립니다. 종료할 인덱스입니다. 따라서 이 방법에는 더 많은 총계가 필요합니다. 표준 인덱스 빌드보다 작업이 더 오래 걸리며 훨씬 더 오래 걸립니다. 완료합니다. 그러나 정상적인 작동이 가능하기 때문에 인덱스가 작성되는 동안 계속 진행하면 이 방법이 유용합니다. 프로덕션 환경에 새 인덱스 추가 물론, 인덱스 생성으로 인한 추가 CPU 및 I/O 로드로 인해 속도가 느려질 수 있음 다른 작업.
동시 인덱스 빌드에서는 인덱스가 실제로 입력됩니다. 하나의 트랜잭션으로 시스템 카탈로그에 넣은 다음 두 테이블 스캔은 두 번째 및 세 번째 트랜잭션에서 발생합니다. 문제가 있는 경우 고유성 위반과 같이 테이블을 스캔하는 동안 발생합니다. 고유 인덱스에서,범퍼카 토토 생성명령은 실패하지만 뒤에 남깁니다."잘못됨"색인. 이 색인은 다음에 대해 무시됩니다. 불완전할 수 있기 때문에 쿼리 목적; 그러나 그것은 여전히 업데이트 오버헤드를 소비합니다.psql \d명령 그러한 색인을 다음과 같이 표시합니다.잘못됨:
postgres=# \d 탭
테이블 "public.tab"
칼럼 | 유형 | 수정자
------+---------+-----------
열 | 정수 |
인덱스:
"idx" btree(열) 잘못된
이러한 경우 권장되는 복구 방법은 색인을 생성하고 다시 수행해 보세요.범퍼카 토토 생성 동시에. (또 다른 가능성은 인덱스를 다시 작성하는 것입니다. 와 함께REINDEX. 그러나 이후REINDEX동시를 지원하지 않습니다. 빌드에서는 이 옵션이 매력적으로 보이지 않을 것입니다.)
고유 색인을 동시에 구축할 때의 또 다른 주의사항은 고유성 제약 조건이 이미 시행되고 있음 두 번째 테이블 스캔이 시작되면 다른 트랜잭션에 대해 이는 제약 조건 위반이 다음에서 보고될 수 있음을 의미합니다. 인덱스를 사용할 수 있게 되기 전의 다른 쿼리 또는 인덱스 빌드가 결국 실패하는 경우에도 마찬가지입니다. 또한 만약에 두 번째 스캔에서는 실패가 발생합니다."잘못됨"색인은 계속해서 나중에 고유성 제약 조건이 적용됩니다.
표현식 색인 및 부분 범퍼카 토토의 동시 빌드 지원됩니다. 이러한 평가에서 발생하는 오류 표현식은 설명된 것과 유사한 동작을 유발할 수 있습니다. 위의 고유 제약 조건 위반에 대해 설명합니다.
정규 인덱스 빌드는 다른 일반 인덱스 빌드를 허용합니다. 동일한 테이블이 병렬로 발생하지만 동시에 발생하는 테이블은 하나만 있습니다. 인덱스 구축은 한 번에 테이블에서 발생할 수 있습니다. 두 경우 모두 없음 테이블에 대한 다른 유형의 스키마 수정이 허용됩니다. 그 동안. 또 다른 차이점은 일반범퍼카 토토 생성명령은 다음 내에서 수행될 수 있습니다. 거래가 차단되었지만범퍼카 토토 생성 동시에할 수 없습니다.
참조메이저 토토 사이트 : 문서 : 8.3 : 색인정보용 인덱스를 언제 사용할 수 있는지, 언제 사용하지 않는지, 어떤 특정 상황에 유용할 수 있는지.
현재 B-tree 및 GiST 인덱스 방법만 지원합니다. 다중 열 인덱스. 기본적으로 최대 32개의 필드를 지정할 수 있습니다. (이 제한은 구축 시 변경될 수 있습니다.PostgreSQL.) 현재는 B-트리만 지원합니다. 고유 인덱스.
안연산자 클래스지정 가능 인덱스의 각 열에 대해. 연산자 클래스는 해당 열의 인덱스에서 사용할 연산자입니다. 예를 들어, 4바이트 정수의 B-트리 인덱스는 다음을 사용합니다.int4_ops클래스; 이 연산자 클래스에는 다음이 포함됩니다. 4바이트 정수에 대한 비교 함수. 실제로는 열의 데이터 유형에 대한 기본 연산자 클래스는 일반적으로 충분하다. 연산자 클래스를 갖는 주요 요점은 다음과 같습니다. 일부 데이터 유형에는 하나 이상의 의미 있는 데이터가 있을 수 있습니다. 주문. 예를 들어, 복소수를 정렬하고 싶을 수도 있습니다. 절대값 또는 실수부로 데이터 유형을 지정합니다. 우리는 할 수 있었다 이는 데이터 유형에 대해 두 개의 연산자 클래스를 정의한 다음 인덱스를 만들 때 적절한 클래스를 선택합니다. 추가 정보 연산자 클래스에 대한 내용은 다음과 같습니다.섹션 11.9그리고섹션 34.14.
순서 있는 스캔을 지원하는 인덱스 방법의 경우(현재는 B-트리), 선택적 조항ASC, 설명, NULL 첫 번째및/또는NULL이 마지막임될 수 있습니다 인덱스의 일반적인 정렬 방향을 반대로 지정합니다. 순서가 지정된 인덱스는 앞으로 또는 뒤로 스캔할 수 있으므로 단일 열을 생성하는 것은 일반적으로 유용하지 않습니다.설명색인 — 해당 정렬 순서는 이미 일반 인덱스와 함께 사용할 수 있습니다. 이 옵션의 가치는 정렬과 일치하는 다중 열 인덱스를 생성할 수 있습니다. 다음과 같은 혼합 순서 쿼리에 의해 요청된 순서선택 ... ORDER BY x ASC, y DESC.NULLS지원이 필요한 경우 옵션이 유용합니다"null은 낮은 정렬"행동보다는 기본값"null은 높은 수준으로 정렬됩니다", 에 정렬 단계를 피하기 위해 인덱스에 의존하는 쿼리입니다.
사용스포츠 토토 베트맨 : 문서 : 8.3 : Drop Index에 범퍼카 토토을 제거합니다.
이전 릴리스PostgreSQL또한 R-트리 인덱스 방법이 있었습니다. 이 방법은 제거되었습니다 왜냐하면 GiST 방식에 비해 큰 장점이 없었기 때문입니다. 만일rtree 사용지정되었습니다.범퍼카 토토 생성다음과 같이 해석합니다요점 사용, 이전 버전의 변환을 단순화하기 위해 데이터베이스를 GiST로.
열에 B-트리 인덱스를 생성하려면제목테이블에영화:
고유 인덱스 생성 title_idx ON 영화(제목);
표현식에 대한 색인을 생성하려면하위(제목), 효율적인 대소문자 구분 허용 검색:
CREATE INDEX lower_title_idx ON 영화 ((lower(title)));
| 주의 |
|
해시 인덱스 작업은 현재 WAL에 기록되지 않으므로 해시 인덱스를 다시 작성해야 할 수도 있습니다.REINDEX데이터베이스 충돌 후 기록되지 않은 변경 사항이었습니다. 또한 해시 인덱스의 변경 사항은 다음과 같습니다. 이후에는 웜 대기 복제를 통해 복제되지 않습니다. 초기 기본 백업을 수행하므로 잘못된 답변을 제공합니다. 이후에 이를 사용하는 쿼리입니다. 이러한 이유로, 해시 인덱스 사용은 현재 권장되지 않습니다. |
기본이 아닌 정렬 순서로 범퍼카 토토을 생성하려면 널:
CREATE INDEX title_idx_nulls_low ON 영화(제목 NULLS FIRST);
기본값이 아닌 채우기 비율을 사용하여 색인을 생성하려면:
(채우기 비율 = 70)을 사용하여 영화(제목)에 고유 인덱스 title_idx 생성;
열에 범퍼카 토토을 생성하려면코드테이블에영화그리고 색인을 가지고 있습니다 테이블스페이스에 상주함인덱스 공간:
CREATE INDEX code_idx ON 영화(코드) TABLESPACE indexspace;
쓰기를 잠그지 않고 색인을 생성하려면 테이블:
sales_table(수량)에 대해 동시에 sales_yangity_index 인덱스 생성;