이 문서는 지원되지 않는 버전의 PostgreSQL 용입니다.
당신은에 대해 같은 페이지를 볼 수 있습니다PostgreSQL : 문서 : 17 : 62.6. 색인 토토 핫 추정 기능버전 또는 위에 나열된 다른 지원 버전 중 하나입니다.

51.6. 색인 토토 사이트 순위 추정 기능

theAmcostestimate함수는입니다 Clauses가 결정된 곳의 목록을 주어 색인으로 사용할 수 있습니다. 비용의 추정치를 반환해야합니다 인덱스 및 Where Clauses의 선택성에 액세스 (즉, 부모 테이블 행의 비율은 인덱스 스캔 중에 검색). 간단한 경우에는 거의 모든 것입니다 토토 사이트 순위 추정기의 작업은 표준으로 호출하여 수행 할 수 있습니다. 최적화의 루틴; 의 요점Amcostestimate함수는 색인을 허용하는 것입니다 경우에 따라 인덱스 유형 특이 적 지식을 제공하는 방법 표준 추정치를 개선 할 수 있습니다.

Amcostestimate함수 서명이 있어야합니다 :

무효
amcostestestimate (plannerinfo *root,
                indexoptinfo *index,
                List *Indexquals,
                reploptinfo *outer_rel,
                Cost *IndexStartUpCost,
                토토 사이트 순위 *IndextOtalCost,
                선택성 *indexSelectivity,
                이중 *색인 상관 관계);

처음 4 개의 매개 변수는 입력입니다 :

루트

쿼리에 대한 플래너의 정보 가공.

index

고려중인 색인.

indexquals

인덱스 Qual Clauses 목록 (암시 적으로 anded); 에이nil목록은 예선이 없음을 나타냅니다 사용 가능합니다. 목록에는 표현이 포함되어 있습니다 스캔 키가 아닌 나무.

outer_rel

인덱스가 조인 내부에서 사용하도록 고려되는 경우 바깥쪽에 대한 플래너의 정보 인 indexscan 가입의. 그렇지 않으면null. 언제 비NULL, 일부 Qual Clauses 단순하기보다는이 Rel과 함께 조항에 합류합니다. 제한 조항. 또한 토토 사이트 순위 추정기는 예상해야합니다 각 행에 대해 인덱스 스캔이 반복 될 것입니다. 외부 rel.

마지막 4 개의 매개 변수는 회의 별 출력입니다 :

*INDEXSTARTUPCOST

인덱스 스타트 업 프로세싱 토토 사이트 순위으로 설정

*IndextOtalCost

총 지수 처리 토토 사이트 순위으로 설정

*indexSelectivity

색인 선택성으로 설정

*색인 상관

인덱스 스캔 순서 사이의 상관 계수로 설정 그리고 기본 테이블의 주문

토토 사이트 순위 추정 기능은 C로 작성되어야합니다. SQL 또는 사용 가능한 절차 언어는 필요하기 때문입니다 플래너/최적화의 내부 데이터 구조에 액세스하십시오.

인덱스 액세스 토토 사이트 순위은 매개 변수를 사용하여 계산해야합니다. 사용SRC/백엔드/옵티마이저이저/PATH/COSTIZE.C: a 순차 디스크 블록 페치 토토 사이트 순위이 듭니다SEQ_PAGE_COST, 비 순차적 인 페치 토토 사이트 순위random_page_cost및 토토 사이트 순위 하나의 인덱스 행을 처리하는 것은 일반적으로로 취해야합니다.cpu_index_tuple_cost. 또한, 적절한 다중cpu_operator_cost인덱스 중에 호출 된 비교 연산자에 대해 청구됩니다 처리 (특히 평가indexquals자신).

액세스 토토 사이트 순위에는 모든 디스크 및 CPU 토토 사이트 순위이 포함되어야합니다. 인덱스 자체를 스캔하는 것과 관련이 있지만not검색 토토 사이트 순위 또는 The에 의해 식별되는 부모 테이블 행을 처리합니다 색인.

the"시작 토토 사이트 순위"의 일부입니다 시작하기 전에 소비 해야하는 총 스캔 토토 사이트 순위 첫 번째 줄을 가져 오십시오. 대부분의 인덱스의 경우 이것은 0으로 사용할 수 있습니다. 그러나 시작 토토 사이트 순위이 높은 인덱스 유형은이를 설정할 수 있습니다. 0이 아닌.

theindexSelectivity설정해야합니다 부모 테이블 행의 추정 비율로 인덱스 스캔 중에 검색되었습니다. 손실 쿼리의 경우 이것은 일반적으로 행의 일부보다 높을 것입니다. 실제로 주어진 Qual 조건을 통과합니다.

theindexceorrelation설정해야합니다 사이의 상관 관계 (-1.0과 1.0 사이)에 인덱스 순서 및 테이블 순서. 이것은 조정하는 데 사용됩니다 상위 테이블에서 행을 가져 오는 토토 사이트 순위에 대한 추정.

가입 케이스에서 반환 된 숫자는 평균이어야합니다. 지수를 한 번 스캔 할 것으로 예상됩니다.

토토 사이트 순위 추정

일반적인 토토 사이트 순위 추정기는 다음과 같이 진행됩니다 :

  1. 부모 테이블 행의 비율을 추정하고 반환합니다 주어진 Qual 조건에 따라 방문됩니다. ~ 안에 색인 유형 특이 적 지식이 없으면 사용하십시오 표준 최적화 기능clauselist_selectivity ():

    *indexselectivity = clauselist_selectivity (root, indexquals,
                                               색인- rel- 릴리드,
                                               join_inner, null);
  2. 방문 할 인덱스 행 수를 추정 스캔 중. 많은 인덱스 유형의 경우 이것은와 동일합니다.indexSelectivity타임즈 인덱스의 행 수이지만 더 많을 수도 있습니다. (메모 페이지와 행의 인덱스 크기는 그만큼indexoptinfostruct.)

  3. 할 인덱스 페이지 수를 추정하십시오 스캔 중에 검색되었습니다. 이것은 단지indexSelectivity인덱스 크기를 시간에 타십시오 페이지.

  4. 인덱스 액세스 토토 사이트 순위을 계산합니다. 일반적인 추정기가 될 수 있습니다 이렇게하십시오 :

    /*
     * 우리의 일반적인 가정은 인덱스 페이지를 읽을 것입니다.
     * 순차적으로, 따라서 그들은 random_page_cost가 아닌 seq_page_cost가 각각 비용이 듭니다.
     * 또한 각 인덱스 행에서 Indexquals 평가를 청구합니다.
     * 모든 비용은 스캔 중에 점진적으로 지불되는 것으로 가정합니다.
     */
    cost_qual_eval (& index_qual_cost, indexquals, root);
    *indexstartupcost = index_qual_cost.startup;
    * indextotalCost = seq_page_cost * numIndexpages +
        (cpu_index_tuple_cost + index_qual_cost.per_tuple) * numindextuples;

    그러나 상기는 상각을 설명하지 않습니다 인덱스는 결합에서 반복 된 인덱스 스캔을 통해 읽습니다 사례.

  5. 인덱스 상관을 추정합니다. 간단한 주문 단일 필드에서 색인, 이것은 검색 할 수 있습니다. PG_STATISTIC. 상관 관계를 알 수없는 경우 보수적 인 추정치는 0입니다 (상관 관계 없음).

토토 사이트 순위 추정기 기능의 예는에서 찾을 수 있습니다.src/backend/utils/adt/selfuncs.c.