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