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

61.6.색인 토토 핫 추정 기능

theAmcostestimate함수는 인덱스와 함께 사용할 수있는 조항의 위치 및 순서 목록을 포함하여 가능한 색인 스캔을 설명하는 정보가 제공됩니다. 인덱스에 액세스하는 토토 핫과 위치 조항의 선택성에 대한 추정치를 반환해야합니다 (즉, 인덱스 스캔 중에 검색 될 부모 테이블 행의 비율).Amcostestestime함수는 표준 추정치를 개선 할 수있는 경우 인덱스 액세스 방법을 색인 유형 특정 지식을 제공 할 수 있도록하는 것입니다..

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

무효

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

루트

처리중인 쿼리에 대한 플래너의 정보.

Path

고려중인 인덱스 액세스 경로. 토토 핫 및 선택성 값을 제외한 모든 필드는 유효합니다.

loop_count

토토 핫 추정치에 포함되어야하는 인덱스 스캔의 반복 수. 이것은 NestLoop 조인 내부에서 사용하기 위해 매개 변수화 된 스캔을 고려할 때 일반적으로 1보다 클 것입니다.loop_count여러 스캔에서 일부 캐싱 효과를 허용하는 것이 적절할 수 있음을 의미합니다.

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

*INDEXSTARTUPCOST

인덱스 시작 프로세싱 토토 핫으로 설정

*IndextOtalCost

지수 처리의 총 토토 핫으로 설정

*indexSelectivity

인덱스 선택성으로 설정

*색인 상관

인덱스 스캔 순서와 기본 테이블 순서 사이의 상관 계수로 설정

*indexpages

인덱스 리프 페이지 수로 설정

토토 핫 추정 기능은 Planner/Optimizer의 내부 데이터 구조에 액세스해야하기 때문에 SQL이 아닌 C로 작성되어야합니다..

인덱스 액세스 토토 핫은에 사용 된 매개 변수를 사용하여 계산해야합니다.SRC/백엔드/옵티마이저이저/Path/Costize.c: 순차 디스크 블록 페치 토토 핫이 듭니다seq_page_cost, 비 순차적 인 페치는 토토 핫이 듭니다random_page_cost, 그리고 하나의 인덱스 행을 처리하는 토토 핫은 일반적으로로 취해야합니다.cpu_index_tuple_cost. 또한 적절한 배수의cpu_operator_cost인덱스 처리 중에 호출 된 비교 연산자에 대해 (특히 인덱스 자체 평가).

액세스 토토 핫에는 인덱스 자체를 스캔하는 것과 관련된 모든 디스크 및 CPU 토토 핫이 포함되어야하지만아님지수에 의해 식별되는 부모 테이블 행을 검색하거나 처리하는 토토 핫.

the시작 토토 핫첫 번째 행을 가져 오기 전에 소비 해야하는 총 스캔 비용의 일부입니다. 대부분의 인덱스의 경우 이것은 0으로 사용할 수 있지만 시작 토토 핫이 높은 인덱스 유형은 0이 아닌 설정을 원할 수 있습니다.

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

the색인 상관 관계는 인덱스 순서와 테이블 순서 사이의 상관 관계 (-1.0과 1.0 사이)로 설정해야합니다. 이것은 부모 테이블에서 행을 가져 오는 토토 핫에 대한 견적을 조정하는 데 사용됩니다.

theindexpages잎 페이지 수로 설정해야합니다. 이것은 병렬 인덱스 스캔의 작업자 수를 추정하는 데 사용됩니다.

언제loop_count1보다 크고, 반환 된 숫자는 색인을 한 번 스캔 할 때 예상되는 평균이어야합니다.

토토 핫 추정

일반적인 토토 핫 추정기는 다음과 같이 진행됩니다 :

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

    *indexselectivity = clauselist_selectivity (root, path- indexquals,
  2. 스캔 중에 방문 할 인덱스 행 수를 추정하십시오. 많은 인덱스 유형의 경우 이것은와 동일합니다.indexSelectivity인덱스의 행 수를 시간에 타면 더 많을 수도 있습니다. (페이지와 행의 인덱스 크기는에서 사용할 수 있습니다.path- indexinfostruct.)

  3. 스캔 중에 검색 될 인덱스 페이지 수를 추정하십시오. 이것은 단지indexSelectivity페이지에서 인덱스 크기를 시간에 타십시오.

  4. 인덱스 액세스 토토 핫을 계산합니다. 일반적인 추정기가 이것을 할 수 있습니다 :

    /*

    그러나, 위의 내용은 반복 된 인덱스 스캔에 걸쳐 인덱스 판독의 상각을 설명하지 않습니다.

  5. 인덱스 상관 관계를 추정합니다. 단일 필드의 간단한 주문 인덱스의 경우 PG_STATISTIC에서 검색 할 수 있습니다.

토토 핫 추정기 기능의 예는 찾을 수 있습니다.src/backend/utils/adt/selfuncs.c.