토토 핫 생성 - 확장 통계 정의
토토 핫 작성 [[존재하지 않으면]Statistics_Name
] 에 (표현
) 에서table_name
토토 핫 작성 [[존재하지 않으면]Statistics_Name
] [(Statistics_kind
[, ...])] 에column_name
| (표현
),column_name
| (표현
) [, ...] 에서table_name
토토 핫 생성
지정된 테이블, 외국 표 또는 구체화 된보기에 대한 새로운 확장 토토 핫 객체 추적 데이터를 생성합니다. 토토 핫 개체는 현재 데이터베이스에서 생성되며 명령을 발행하는 사용자가 소유합니다.
the토토 핫 생성
명령에는 두 가지 기본 양식이 있습니다. 첫 번째 형태는 단일 표현식에 대한 일 변량 통계를 수집 할 수있게하여 인덱스 유지 보수의 오버 헤드없이 식 인덱스와 유사한 이점을 제공합니다. 이 양식은 다양한 통계 종류가 다변량 통계 만 참조하기 때문에 통계 종류를 지정할 수 없습니다. 두 번째 형태의 명령은 여러 열에 대한 다변량 통계 및/또는 표현식을 수집 할 수있게되며, 선택적으로 포함 할 통계 유형을 지정합니다. 이 양식은 또한 목록에 포함 된 모든 표현식에서 단 변량 통계를 자동으로 수집합니다.
스키마 이름이 주어진 경우 (예 :토토 핫 작성 myschema.mystat ...
) 그러면 토토 핫 객체가 지정된 스키마에서 생성됩니다. 그렇지 않으면 현재 스키마에서 생성됩니다. 주어진 경우 토토 핫 객체의 이름은 동일한 스키마의 다른 토토 핫 객체의 이름과 구별되어야합니다.
존재하지 않으면
이름이 같은 토토 핫 개체가 이미 존재하는 경우 오류를 던지지 마십시오. 이 경우 통지가 발행됩니다. 정의의 세부 사항이 아니라 토토 핫 객체의 이름 만 여기서 고려됩니다. 토토 핫 이름이 필요합니다존재하지 않으면
지정되어 있습니다.
Statistics_Name
생성 할 토토 핫 개체의 이름 (선택적으로 스키마 자격). 이름이 생략되면PostgreSQL부모 테이블의 이름과 정의 된 열 이름 및/또는 표현식에 따라 적절한 이름을 선택합니다..
Statistics_kind
이 토토 핫 객체에서 계산할 다변량 토토 핫 종류. 현재 지원되는 종류는ndistinct
, n- 결정 토토 핫를 가능하게하는종속성
, 기능적 종속성 통계를 가능하게하고MCV
대부분의 공통 값 목록을 활성화합니다. 이 조항이 생략되면 모든 지원되는 통계 종류가 통계 객체에 포함됩니다. 통계 정의에 단순한 열 참조가 아닌 복잡한 표현식이 포함 된 경우 단 변량 표현 통계는 자동으로 구축됩니다. 자세한 내용은 참조하십시오.섹션 14.2.2및사설 토토 43_27.
column_name
계산 된 통계로 덮을 테이블 열의 이름. 다변량 통계를 구축 할 때만 허용됩니다. 최소한 두 개의 열 이름이나 표현이 지정되어야하며 순서는 중요하지 않습니다.
표현
계산 된 통계에 의해 다루는 표현. 이것은 단일 표현식에 대한 일 변량 통계를 구축하는 데 사용될 수 있거나 다변량 통계를 구축하기위한 여러 열 이름 및/또는 표현식의 일부로 사용될 수 있습니다. 후자의 경우, 별도의 일 변량 통계는 목록의 각 표현식에 대해 자동으로 구축됩니다.
table_name
열이 포함 된 테이블의 이름 (선택적으로 스키마 자격)이 계산됩니다. 보다분석상속 및 파티션 처리에 대한 설명.
당신은 그것을 읽는 토토 핫 객체를 만들려면 테이블의 소유자 여야합니다. 그러나 일단 생성되면 토토 핫 객체의 소유권은 기본 테이블과 무관합니다.
표현 통계는 표현당이며 인덱스 유지 보수의 오버 헤드를 피하는 것을 제외하고는 표현식에 대한 인덱스를 생성하는 것과 유사합니다. 표현 통계는 통계 객체 정의에서 각 표현식에 대해 자동으로 구축됩니다.
확장 된 토토 핫는 현재 테이블 조인에 대한 선택성 추정을 위해 플래너에서 사용하지 않습니다. 이 제한은 향후 버전의에서 제거 될 것입니다.PostgreSQL.
테이블 생성T1
기능적으로 종속 된 두 개의 열이있는 경우, 즉 첫 번째 열의 값에 대한 지식은 다른 열의 값을 결정하기에 충분합니다. 그런 다음 기능 의존성 토토 핫는 해당 열을 기반으로합니다.
테이블 생성 t1 ( int, B int ); T1에 삽입 i/100, i/500을 선택하십시오 Generate_series (1,1000000) s (i); T1 분석; - 일치하는 행의 수는 크게 과소 평가됩니다. t1에서 선택 * 선택 * (a = 1) 및 (b = 0)을 설명하십시오. T1에서 A, B에 통계 S1 (종속성)을 만듭니다. T1 분석; - 이제 행 카운트 추정치가 더 정확합니다. t1에서 선택 * 선택 * 선택 * (a = 1) 및 (b = 0);
기능적 의존성 토토 핫가 없으면 플래너는 두 사람이 가정 할 것입니다.여기서
조건은 독립적이며, 선택성을 함께 곱하여 훨씬 더 작은 행 카운트 추정치에 도달합니다. 그러한 토토 핫를 통해 플래너는여기서
조건은 중복되어 행 카운트를 과소 평가하지 않습니다.
테이블 생성T2
두 개의 완벽하게 상관 관계가있는 열 (동일한 데이터 포함)과 해당 열에 MCV 목록이 포함되어 있습니다.
테이블 생성 t2 ( int, B int ); T2에 삽입 Mod (I, 100), Mod (I, 100) Generate_series (1,1000000) s (i); T2에서 A, B에 통계 S2 (MCV)를 생성합니다. T2 분석; - 유효한 조합 (MCV에서 발견) 선택 * 선택 *에서 t2에서 (a = 1) 및 (b = 1); - 유효하지 않은 조합 (MCV에서 찾을 수 없음) 선택 * 선택 *에서 * t2에서 (a = 1) 및 (b = 2);에서 선택하십시오.
MCV 목록은 테이블에 일반적으로 나타나는 특정 값에 대한 플래너에게 더 자세한 정보를 제공 할뿐만 아니라 표에 나타나지 않는 값 조합의 선택성에 대한 상한을 제공하여 두 경우 모두 더 나은 추정치를 생성 할 수 있습니다..
테이블 생성T3
단일 타임 스탬프 열이 있는데, 해당 열의 표현식을 사용하여 쿼리를 실행하십시오. 확장 된 통계가 없으면 플래너는 표현식의 데이터 분포에 대한 정보가 없으며 기본 추정치를 사용합니다. 플래너는 또한 달에 잘린 날짜의 가치가 그 날에 잘린 날짜의 가치에 의해 완전히 결정된다는 것을 인식하지 못한다. 그런 다음 표현식과 NDISTINCT 통계는이 두 표현식을 기반으로합니다.
테이블 생성 t3 ( 타임 스탬프 ); T3에 삽입 Generate_Series ( '2020-01-01':: Timestamp,에서 i를 선택하십시오. '2020-12-31':: 타임 스탬프, '1 분':: 간격) s (i); T3 분석; - 일치하는 행의 수는 크게 과소 평가됩니다. T3에서 선택 * 선택 *을 설명하십시오 여기서 date_trunc ( 'month', a) = '2020-01-01':: timestamp; T3에서 선택 * 선택 *을 설명하십시오 여기서 date_trunc ( 'day', a) '2020-01-01':: timestamp 사이 및 '2020-06-30':: 타임 스탬프; Select Date_trunc ( 'Month', A), Date_trunc ( 'Day', A) 분석 설명 1, 2까지 T3 그룹으로부터; -표현식 쌍에 대한 ndistinct 통계를 구축 - 통계는 자동으로 구축됩니다) t3에서 date_trunc ( 'month', a), date_trunc ( 'day', a)에서 통계 S3 (ndistinct) 생성; T3 분석; - 이제 행 카운트 추정치가 더 정확합니다. T3에서 선택 * 선택 *을 설명하십시오 여기서 date_trunc ( 'month', a) = '2020-01-01':: timestamp; T3에서 선택 * 선택 *을 설명하십시오 여기서 date_trunc ( 'day', a) '2020-01-01':: timestamp 사이 및 '2020-06-30':: 타임 스탬프; Select Date_trunc ( 'Month', A), Date_trunc ( 'Day', A) 분석 설명 T3 그룹에서 1, 2;
표현 및 ndistinct 통계가 없으면, 플래너는 표현식의 고유 한 값 수에 대한 정보가 없으며 기본 추정에 의존해야합니다. 평등 및 범위 조건은 0.5% 선택성을 갖는 것으로 가정되며, 표현식의 뚜렷한 값의 수는 열과 동일하다고 가정합니다 (즉, 고유). 이로 인해 처음 두 쿼리에서 행 카운트가 크게 과소 평가됩니다. 또한 플래너는 표현 간의 관계에 대한 정보가 없으므로 두 가지를 가정합니다.여기서
and그룹 by
조건은 독립적이며, 선택성을 함께 곱하여 집계 쿼리에서 그룹 수의 심각한 과대 평가에 도달합니다. 이는 표현에 대한 정확한 통계가 없음으로써 더욱 악화되며, 플래너는 열에 대한 ndistinct에서 파생 된 표현식에 대한 기본 NDistinct 추정치를 사용하도록 강요합니다. 이러한 통계를 통해 플래너는 조건이 상관 관계가 있음을 인식하고 훨씬 더 정확한 추정치에 도달합니다.
없음토토 핫 생성
SQL 표준의 명령.
문서에 올바른 것이없는 것이 있으면 일치하지 않습니다. 특정 기능에 대한 귀하의 경험 또는 추가 설명이 필요합니다. 사용이 양식문서 문제를보고하려면