무지개 토토 생성 — 확장 통계 정의
무지개 토토 생성 [ [ 존재하지 않는 경우 ]무지개 토토_이름] 사용(표현) 보낸사람테이블_이름무지개 토토 작성 [ [ 존재하지 않는 경우 ]무지개 토토_이름] [ (무지개 토토_종류[, ... ] ) ] 켜짐열_이름| (표현) }, {열_이름| (표현) [, ...] 보낸사람테이블_이름
무지개 토토 생성지정된 테이블, 외부 테이블 또는 구체화된 뷰에 대한 데이터를 추적하는 새로운 확장 통계 개체를 생성합니다. 통계 개체는 현재 데이터베이스에 생성되며 명령을 실행하는 사용자가 소유하게 됩니다.
그무지개 토토 생성명령에는 두 가지 기본 형식이 있습니다. 첫 번째 형식을 사용하면 단일 표현식에 대한 일변량 통계를 수집할 수 있으므로 인덱스 유지 관리에 대한 오버헤드 없이 표현식 인덱스와 유사한 이점을 제공합니다. 다양한 통계 종류는 다변량 통계만을 참조하므로 이 양식에서는 통계 종류를 지정할 수 없습니다. 명령의 두 번째 형식을 사용하면 여러 열 및/또는 표현식에 대한 다변량 통계를 수집할 수 있으며 선택적으로 포함할 통계 종류를 지정할 수 있습니다. 또한 이 양식을 사용하면 목록에 포함된 모든 표현식에 대해 일변량 통계가 자동으로 수집됩니다.
스키마 이름이 제공된 경우(예:무지개 토토 생성 myschema.mystat ...) 그러면 지정된 스키마에 통계 개체가 생성됩니다. 그렇지 않으면 현재 스키마에 생성됩니다. 주어진 경우, 통계 객체의 이름은 동일한 스키마에 있는 다른 통계 객체의 이름과 구별되어야 합니다.
존재하지 않는 경우동일한 이름을 가진 통계 개체가 이미 존재하는 경우 오류를 발생시키지 마십시오. 이 경우 통지가 발행됩니다. 여기서는 통계 개체의 이름만 고려되며 해당 정의에 대한 세부 정보는 고려되지 않습니다. 다음 경우에는 통계 이름이 필요합니다.존재하지 않는 경우지정되었습니다.
무지개 토토_이름생성될 무지개 토토 개체의 이름(선택적으로 스키마 한정). 이름이 생략된 경우,포스트그레SQL상위 테이블의 이름과 정의된 열 이름 및/또는 표현식을 기반으로 적절한 이름을 선택합니다.
무지개 토토_종류이 통계 개체에서 계산될 다변량 통계 종류입니다. 현재 지원되는 종류는 다음과 같습니다.특이함11198_11239종속성11278_11334mcv가장 일반적인 값 목록을 활성화합니다. 이 절을 생략하면 지원되는 모든 통계 종류가 통계 개체에 포함됩니다. 통계 정의에 단순한 열 참조가 아닌 복잡한 표현식이 포함된 경우 일변량 표현식 통계가 자동으로 작성됩니다. 자세한 내용은 다음을 참조하세요.섹션 14.2.2그리고토토 꽁 머니 43_27.
열_이름계산된 통계에 포함되는 테이블 열의 이름입니다. 이는 다변량 통계를 작성할 때만 허용됩니다. 열 이름이나 표현식을 두 개 이상 지정해야 하며 순서는 중요하지 않습니다.
표현계산된 통계에 포함되는 표현식입니다. 이는 단일 표현식에 대한 일변량 통계를 작성하는 데 사용되거나, 다변량 통계를 작성하기 위한 여러 열 이름 및/또는 표현식 목록의 일부로 사용될 수 있습니다. 후자의 경우 목록의 각 표현식에 대해 별도의 일변량 통계가 자동으로 작성됩니다.
테이블_이름무지개 토토가 계산되는 열을 포함하는 테이블의 이름(선택적으로 스키마 한정); 참조분석상속 및 파티션 처리에 대한 설명.
테이블을 읽는 무지개 토토 개체를 생성하려면 테이블의 소유자여야 합니다. 그러나 일단 생성되면 무지개 토토 개체의 소유권은 기본 테이블과 독립적입니다.
식 무지개 토토는 식별로 이루어지며 인덱스 유지 관리의 오버헤드를 방지한다는 점을 제외하면 식에 인덱스를 생성하는 것과 유사합니다. 식 무지개 토토는 무지개 토토 개체 정의의 각 식에 대해 자동으로 작성됩니다.
확장 통계는 현재 테이블 조인에 대한 선택성 추정을 위해 플래너에서 사용되지 않습니다. 이 제한은 향후 버전에서 제거될 가능성이 높습니다.PostgreSQL.
테이블 생성t1두 개의 기능적으로 종속된 열이 있는 경우, 즉 첫 번째 열의 값을 아는 것만으로도 다른 열의 값을 결정하는 데 충분합니다. 그런 다음 해당 열에 대한 기능적 종속성 통계가 작성됩니다.
테이블 t1 생성(
정수,
b 정수
);
t1에 삽입 i/100, i/500 선택
generate_series(1,1000000) s(i)에서;
t1을 분석합니다.
-- 일치하는 행 수가 크게 과소평가됩니다.
설명 분석 선택 * FROM t1 WHERE (a = 1) AND (b = 0);
t1에서 a, b에 대한 통계 s1(종속성) 생성;
t1을 분석합니다.
-- 이제 행 개수 추정이 더 정확해졌습니다.
설명 분석 선택 * FROM t1 WHERE (a = 1) AND (b = 0);
기능 종속성 통계가 없으면 계획자는 두 가지를 가정합니다.어디조건은 독립적이며 선택성을 함께 곱하여 너무 작은 행 개수 추정치에 도달합니다. 이러한 통계를 통해 기획자는 다음을 인식합니다.어디조건은 중복되며 행 수를 과소평가하지 않습니다.
테이블 생성t2완전히 상관된 두 개의 열(동일한 데이터 포함)과 해당 열에 대한 MCV 목록이 있습니다.
테이블 t2 생성(
정수,
b 정수
);
t2에 삽입 SELECT mod(i,100), mod(i,100)
generate_series(1,1000000) s(i)에서;
t2에서 a, b에 대한 통계 s2(mcv)를 생성합니다.
t2를 분석합니다.
-- 유효한 조합(MCV에 있음)
설명 분석 선택 * FROM t2 WHERE (a = 1) AND (b = 1);
-- 잘못된 조합(MCV에서는 찾을 수 없음)
설명 분석 선택 * FROM t2 WHERE (a = 1) AND (b = 2);
MCV 목록은 테이블에 일반적으로 나타나는 특정 값에 대한 자세한 정보와 테이블에 나타나지 않는 값 조합의 선택성에 대한 상한을 플래너에게 제공하므로 두 경우 모두 더 나은 추정치를 생성할 수 있습니다.
테이블 생성t3단일 타임스탬프 열을 사용하고 해당 열의 표현식을 사용하여 쿼리를 실행합니다. 확장 통계가 없으면 플래너는 표현식의 데이터 분포에 대한 정보가 없으며 기본 추정치를 사용합니다. 또한 플래너는 월 단위로 잘린 날짜 값이 일 단위로 잘린 날짜 값에 의해 완전히 결정된다는 사실을 인식하지 못합니다. 그런 다음 표현식과 고유한 통계는 이 두 표현식을 기반으로 작성됩니다.
테이블 t3 생성(
타임스탬프
);
INSERT INTO t3 SELECT i FROM generate_series('2020-01-01'::timestamp,
'2020-12-31'::타임스탬프,
'1분'::간격) s(i);
t3를 분석합니다.
-- 일치하는 행 수가 크게 과소평가됩니다.
설명 분석 선택 * t3에서
WHERE date_trunc('월', a) = '2020-01-01'::timestamp;
설명 분석 선택 * t3에서
WHERE date_trunc('day', a) BETWEEN '2020-01-01'::timestamp
AND '2020-06-30'::타임스탬프;
설명 분석 선택 date_trunc('월', a), date_trunc('일', a)
t3 그룹에서 1, 2로;
-- 표현식 쌍에 대해 고유한 통계를 작성합니다(표현식별).
-- 통계는 자동으로 작성됩니다)
무지개 토토 생성 s3(ndistinct) ON date_trunc('월', a), date_trunc('일', a) FROM t3;
t3를 분석합니다.
-- 이제 행 개수 추정이 더 정확해졌습니다.
설명 분석 선택 * t3에서
WHERE date_trunc('월', a) = '2020-01-01'::timestamp;
설명 분석 선택 * t3에서
WHERE date_trunc('day', a) BETWEEN '2020-01-01'::timestamp
AND '2020-06-30'::타임스탬프;
설명 분석 선택 date_trunc('월', a), date_trunc('일', a)
t3 그룹에서 1, 2;
식 및 고유 통계가 없으면 플래너는 식의 고유 값 수에 대한 정보가 없으며 기본 추정에 의존해야 합니다. 같음 및 범위 조건은 선택도가 0.5%인 것으로 가정하고 표현식의 고유 값 개수는 열과 동일한 것으로 가정합니다(즉, 고유). 이로 인해 처음 두 쿼리의 행 수가 상당히 과소평가되었습니다. 게다가 플래너는 표현식 간의 관계에 대한 정보가 없으므로 둘을 가정합니다.어디그리고그룹별조건은 독립적이며 선택성을 함께 곱하여 집계 쿼리에서 그룹 수를 심각하게 과대평가합니다. 이는 표현식에 대한 정확한 통계가 부족하여 플래너가 열의 ndistinct에서 파생된 표현식에 대해 기본 ndistinct 추정을 사용하도록 강제함으로써 더욱 악화됩니다. 이러한 통계를 통해 기획자는 조건이 서로 연관되어 있음을 인식하고 훨씬 더 정확한 추정치에 도달합니다.
없습니다무지개 토토 생성SQL 표준의 명령입니다.
문서에 올바르지 않은 내용이 있으면 일치하지 않습니다. 특정 기능에 대한 경험이 있거나 추가 설명이 필요한 경우 이용해주세요이 양식문서 문제를 보고합니다.