CREATE STATISTICS
CREATE STATISTICS â ÑоздаÑÑ ÑаÑÑиÑеннÑÑ ÑÑаÑиÑÑикÑ
СинÑакÑиÑ
CREATE STATISTICS [ [ IF NOT EXISTS ]имÑ_ÑÑаÑиÑÑики] ON (вÑÑажение) FROMимÑ_ÑаблиÑÑCREATE STATISTICS [ [ IF NOT EXISTS ]имÑ_ÑÑаÑиÑÑики] [ (вид_ÑÑаÑиÑÑики[, ... ] ) ] ON {имÑ_ÑÑолбÑа| (вÑÑажение) }, {имÑ_ÑÑолбÑа| (вÑÑажение) } [, ...] FROMимÑ_ÑаблиÑÑ
ÐпиÑание #
Ðоманда CREATE STATISTICS ÑоздаÑÑ Ð½Ð¾Ð²Ñй обÑÐµÐºÑ ÑаÑÑиÑенной ÑÑаÑиÑÑики, оÑÑлеживаÑÑий даннÑе опÑеделÑнной ÑаблиÑÑ, ÑÑоÑонней ÑаблиÑÑ Ð¸Ð»Ð¸ маÑеÑиализованного пÑедÑÑавлениÑ. ÐбÑÐµÐºÑ ÑÑаÑиÑÑики бÑÐ´ÐµÑ Ñоздан в ÑекÑÑей базе даннÑÑ
, и его владелÑÑем ÑÑÐ°Ð½ÐµÑ Ð¿Ð¾Ð»ÑзоваÑелÑ, вÑполнÑÑÑий командÑ.
Ðоманда CREATE STATISTICS Ð¸Ð¼ÐµÐµÑ Ð´Ð²Ðµ оÑновнÑе ÑоÑмÑ. ÐеÑÐ²Ð°Ñ ÑоÑма позволÑÐµÑ ÑобÑаÑÑ Ð¾Ð´Ð½Ð¾Ð¼ÐµÑнÑÑ ÑÑаÑиÑÑÐ¸ÐºÑ Ð´Ð»Ñ Ð¾Ð´Ð½Ð¾Ð³Ð¾ вÑÑажениÑ, ÑÑо даÑÑ Ð¿ÑимеÑно ÑÐ¾Ñ Ð¶Ðµ положиÑелÑнÑй ÑÑÑекÑ, ÑÑо и Ð¸Ð½Ð´ÐµÐºÑ Ð¿Ð¾ вÑÑажениÑ, но не ÑÑебÑÐµÑ Ð¿Ð¾Ð´Ð´ÐµÑÐ¶Ð°Ð½Ð¸Ñ Ð¸Ð½Ð´ÐµÐºÑа. ÐÐ°Ð½Ð½Ð°Ñ ÑоÑма не позволÑÐµÑ ÑказаÑÑ Ð²Ð¸Ð´ ÑÑаÑиÑÑики, Ñак как ÑазлиÑнÑе Ð²Ð¸Ð´Ñ ÑÑÑеÑÑвÑÑÑ ÑолÑко Ð´Ð»Ñ Ð¼Ð½Ð¾Ð³Ð¾Ð¼ÐµÑнÑÑ
ÑÑаÑиÑÑик. ÐÑоÑÐ°Ñ ÑоÑма позволÑÐµÑ ÑобÑаÑÑ Ð¼Ð½Ð¾Ð³Ð¾Ð¼ÐµÑнÑе ÑÑаÑиÑÑики по неÑколÑким ÑÑолбÑам и/или вÑÑажениÑм Ñ Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ÑÑÑÑ Ð²ÑбоÑа опÑеделÑннÑÑ
видов ÑÑаÑиÑÑики. ÐÑа ÑоÑма Ñакже авÑомаÑиÑеÑки ÑобиÑÐ°ÐµÑ Ð¾Ð´Ð½Ð¾Ð¼ÐµÑнÑе ÑÑаÑиÑÑики по вÑем оÑделÑнÑм вÑÑажениÑм в ÑпиÑке.
ÐÑли задано Ð¸Ð¼Ñ ÑÑ
ÐµÐ¼Ñ (напÑимеÑ, CREATE STATISTICS myschema.mystat ...), обÑÐµÐºÑ ÑÑаÑиÑÑики ÑоздаÑÑÑÑ Ð² Ñказанной ÑÑ
еме, в пÑоÑивном ÑлÑÑае â в ÑекÑÑей. ÐÑли Ð¸Ð¼Ñ Ð¾Ð±ÑекÑа ÑÑаÑиÑÑики задано, оно должно оÑлиÑаÑÑÑÑ Ð¾Ñ Ð¸Ð¼Ñн дÑÑгиÑ
обÑекÑов ÑÑаÑиÑÑики в ÑÑой ÑÑ
еме.
ÐаÑамеÑÑÑ
IF NOT EXISTSÐе ÑÑиÑаÑÑ Ð¾Ñибкой, еÑли обÑÐµÐºÑ ÑÑаÑиÑÑики Ñ Ñаким именем Ñже ÑÑÑеÑÑвÑеÑ. Ð ÑÑом ÑлÑÑае бÑÐ´ÐµÑ Ð²Ñдано замеÑание. ÐамеÑÑÑе, ÑÑо пÑи ÑÑом пÑовеÑÑеÑÑÑ ÑолÑко Ð¸Ð¼Ñ Ð¾Ð±ÑекÑа, а не Ñ Ð°ÑакÑеÑиÑÑики его опÑеделениÑ. ÐÐ¼Ñ Ð¾Ð±ÑекÑа ÑÑаÑиÑÑики ÑвлÑеÑÑÑ Ð¾Ð±ÑзаÑелÑнÑм, когда ÑказÑваеÑÑÑ
IF NOT EXISTS.имÑ_ÑÑаÑиÑÑикиÐÐ¼Ñ Ñоздаваемого обÑекÑа ÑÑаÑиÑÑики (возможно, дополненное ÑÑ ÐµÐ¼Ð¾Ð¹). ÐÑли Ð¸Ð¼Ñ Ð¾Ð¿ÑÑено, Postgres Pro ÑоÑмиÑÑÐµÑ Ð¿Ð¾Ð´Ñ Ð¾Ð´ÑÑее Ð¸Ð¼Ñ Ð¿Ð¾ имени ÑодиÑелÑÑкой ÑаблиÑÑ Ð¸ именам ÑÑолбÑов и/или вÑÑажений.
вид_ÑÑаÑиÑÑикиÐид многоваÑианÑной ÑÑаÑиÑÑики, коÑоÑÑй бÑÐ´ÐµÑ Ð²ÑÑиÑлÑÑÑÑÑ Ð² ÑÑом обÑекÑе. РнаÑÑоÑÑее вÑÐµÐ¼Ñ Ð¿Ð¾Ð´Ð´ÐµÑживаÑÑÑÑ ÑледÑÑÑие видÑ:
ndistinct(подÑÑÑÑ ÑиÑла ÑазлиÑнÑÑ Ð·Ð½Ð°Ñений),dependencies(опÑеделение ÑÑнкÑионалÑнÑÑ Ð·Ð°Ð²Ð¸ÑимоÑÑей) иmcv(ÑпиÑки ÑамÑÑ ÑаÑÑÑÑ Ð·Ð½Ð°Ñений). ÐÑли ÑÑо пÑедложение опÑÑено, в обÑÐµÐºÑ ÑÑаÑиÑÑики вклÑÑаÑÑÑÑ Ð²Ñе поддеÑживаемÑе Ð²Ð¸Ð´Ñ ÑÑаÑиÑÑики. ÐдномеÑÐ½Ð°Ñ ÑÑаÑиÑÑика по вÑÑажениÑм ÑобиÑаеÑÑÑ Ð°Ð²ÑомаÑиÑеÑки, еÑли в опÑеделении ÑÑаÑиÑÑики пÑиÑÑÑÑÑвÑÑÑ ÑложнÑе вÑÑажениÑ, а не пÑоÑÑо ÑÑÑлки на ÑÑолбÑÑ. Ðа подÑобноÑÑÑми обÑаÑиÑеÑÑ Ðº ÐодÑазделÑ 14.2.2 и РазделÑ 65.2.имÑ_ÑÑолбÑаÐÐ¼Ñ ÑÑолбÑа ÑаблиÑÑ, коÑоÑÑй бÑÐ´ÐµÑ Ð¿Ð¾ÐºÑÑваÑÑÑÑ Ð²ÑÑиÑлÑемой ÑÑаÑиÑÑикой. ÐÑо Ñказание пÑинимаеÑÑÑ ÑолÑко ÑоÑмой поÑÑÑÐ¾ÐµÐ½Ð¸Ñ Ð¼Ð½Ð¾Ð³Ð¾Ð¼ÐµÑной ÑÑаÑиÑÑики. ÐÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼Ð¾ ÑказаÑÑ Ð¼Ð¸Ð½Ð¸Ð¼Ñм два вÑÑÐ°Ð¶ÐµÐ½Ð¸Ñ Ð¸Ð»Ð¸ ÑÑолбÑа; Ð¸Ñ Ð¿Ð¾ÑÑдок не Ð¸Ð¼ÐµÐµÑ Ð·Ð½Ð°ÑениÑ.
вÑÑажениеÐÑÑажение, коÑоÑое бÑÐ´ÐµÑ Ð¿Ð¾ÐºÑÑваÑÑÑÑ Ð²ÑÑиÑлÑемой ÑÑаÑиÑÑикой. ÐÑо Ñказание Ð¼Ð¾Ð¶ÐµÑ Ð·Ð°Ð´Ð°Ð²Ð°ÑÑÑÑ Ð´Ð»Ñ Ð¿Ð¾ÑÑÑÐ¾ÐµÐ½Ð¸Ñ Ð¼Ð½Ð¾Ð³Ð¾Ð¼ÐµÑной ÑÑаÑиÑÑики или бÑÑÑ ÑаÑÑÑÑ ÑпиÑка ÑÑолбÑов и/или вÑÑажений, Ð´Ð»Ñ ÐºÐ¾ÑоÑÑÑ ÑÑÑоиÑÑÑ Ð¼Ð½Ð¾Ð³Ð¾Ð¼ÐµÑÐ½Ð°Ñ ÑÑаÑиÑÑика. РпоÑледнем ÑлÑÑае Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ вÑÑÐ°Ð¶ÐµÐ½Ð¸Ñ Ð² ÑпиÑке авÑомаÑиÑеÑки ÑÑÑоÑÑÑÑ Ð¾ÑделÑнÑе одномеÑнÑе ÑÑаÑиÑÑики.
имÑ_ÑаблиÑÑÐÐ¼Ñ (возможно, дополненное ÑÑ ÐµÐ¼Ð¾Ð¹) ÑаблиÑÑ, ÑодеÑжаÑей ÑÑолбÑÑ, по коÑоÑÑм ÑоздаÑÑÑÑ ÑÑаÑиÑÑика; об оÑобенноÑÑÑÑ , ÑвÑзаннÑÑ Ñ Ð½Ð°Ñледованием и ÑекÑиониÑованием, ÑаÑÑказÑваеÑÑÑ Ð² опиÑании ANALYZE.
ÐÑимеÑаниÑ
ЧÑÐ¾Ð±Ñ ÑоздаÑÑ Ð¾Ð±ÑÐµÐºÑ ÑÑаÑиÑÑики, ÑиÑаÑÑий ÑаблиÑÑ, Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼Ð¾ бÑÑÑ Ð²Ð»Ð°Ð´ÐµÐ»ÑÑем ÑÑой ÑаблиÑÑ. ÐоÑле ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ð¾Ð±ÑекÑа ÑÑаÑиÑÑики его Ð²Ð»Ð°Ð´ÐµÐ»ÐµÑ Ð¼Ð¾Ð¶ÐµÑ Ð¾Ð¿ÑеделÑÑÑÑÑ Ð½ÐµÐ·Ð°Ð²Ð¸Ñимо Ð¾Ñ Ð½Ð¸Ð¶ÐµÐ»ÐµÐ¶Ð°Ñей ÑаблиÑÑ.
СÑаÑиÑÑики вÑÑажений ÑаÑÑÑиÑÑваÑÑÑÑ Ð¿Ð¾ оÑделÑнÑм вÑÑажениÑм подобно ÑомÑ, как ÑÑÑоиÑÑÑ Ð¸Ð½Ð´ÐµÐºÑ Ð¿Ð¾ вÑÑажениÑ, но не ÑÑебÑÑÑ ÑÐ°ÐºÐ¸Ñ Ð½Ð°ÐºÐ»Ð°Ð´Ð½ÑÑ ÑаÑÑ Ð¾Ð´Ð¾Ð², как индекÑÑ. СÑаÑиÑÑики по вÑÑажениÑм ÑÑÑоÑÑÑÑ Ð°Ð²ÑомаÑиÑеÑки Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ вÑÑажениÑ, Ð²Ñ Ð¾Ð´ÑÑего в опÑеделение обÑекÑа ÑÑаÑиÑÑики.
РнаÑÑоÑÑее вÑÐµÐ¼Ñ Ð¿Ð»Ð°Ð½Ð¸ÑовÑик не иÑполÑзÑÐµÑ ÑаÑÑиÑеннÑÑ ÑÑаÑиÑÑÐ¸ÐºÑ Ð´Ð»Ñ Ð¾Ñенок избиÑаÑелÑноÑÑи, вÑполненнÑÑ Ð´Ð»Ñ Ñоединений ÑаблиÑ. ÐÑо огÑаниÑение, ÑкоÑее вÑего, бÑÐ´ÐµÑ ÑнÑÑо в одной из ÑледÑÑÑÐ¸Ñ Ð²ÐµÑÑий Postgres Pro.
ÐÑимеÑÑ #
СоздайÑе ÑаблиÑÑ t1 Ñ Ð´Ð²ÑÐ¼Ñ ÑÑнкÑионалÑно завиÑимÑми ÑÑолбÑами; Ñо еÑÑÑ Ð·Ð½Ð°Ð½Ð¸Ñ Ð·Ð½Ð°ÑÐµÐ½Ð¸Ñ Ð¾Ð´Ð½Ð¾Ð³Ð¾ ÑÑолбÑа доÑÑаÑоÑно, ÑÑÐ¾Ð±Ñ Ð¾Ð¿ÑеделиÑÑ Ð·Ð½Ð°Ñение дÑÑгого. ÐаÑем Ð´Ð»Ñ ÑÑиÑ
ÑÑолбÑов поÑÑÑойÑе ÑÑаÑиÑÑÐ¸ÐºÑ ÑÑнкÑионалÑной завиÑимоÑÑи:
CREATE TABLE t1 (
a int,
b int
);
INSERT INTO t1 SELECT i/100, i/500
FROM generate_series(1,1000000) s(i);
ANALYZE t1;
-- ÑиÑло ÑовпадаÑÑиÑ
ÑÑÑок бÑÐ´ÐµÑ ÐºÐ°ÑаÑÑÑоÑиÑеÑки недооÑенено:
EXPLAIN ANALYZE SELECT * FROM t1 WHERE (a = 1) AND (b = 0);
CREATE STATISTICS s1 (dependencies) ON a, b FROM t1;
ANALYZE t1;
-- ÑепеÑÑ Ð¾Ñенка ÑиÑла ÑÑÑок ÑÑала ÑоÑнее:
EXPLAIN ANALYZE SELECT * FROM t1 WHERE (a = 1) AND (b = 0); Ðез ÑÑаÑиÑÑики ÑÑнкÑионалÑной завиÑимоÑÑи планиÑовÑик пÑедположил бÑ, ÑÑо два ÑÑÐ»Ð¾Ð²Ð¸Ñ WHERE незавиÑÐ¸Ð¼Ñ Ð´ÑÑг Ð¾Ñ Ð´ÑÑга, и пеÑемножил Ð±Ñ Ð¸Ñ
оÑенки избиÑаÑелÑноÑÑи, ÑÑо дало Ð±Ñ ÑлиÑком заниженнÑÑ Ð¾ÑÐµÐ½ÐºÑ ÑиÑла ÑÑÑок. Ðднако Ñ Ñозданной ÑÑаÑиÑÑикой планиÑовÑик понимаеÑ, ÑÑо ÑÑÐ»Ð¾Ð²Ð¸Ñ WHERE избÑÑоÑнÑ, и не оÑибаеÑÑÑ Ñ ÑÑой оÑенкой.
СоздайÑе ÑаблиÑÑ t2 Ñ Ð´Ð²ÑÐ¼Ñ Ð¸Ð´ÐµÐ°Ð»Ñно коÑÑелиÑÑÑÑими ÑÑолбÑами (ÑодеÑжаÑими одинаковÑе даннÑе), а заÑем по ÑÑим ÑÑолбÑам поÑÑÑойÑе ÑÑаÑиÑÑÐ¸ÐºÑ MCV:
CREATE TABLE t2 (
a int,
b int
);
INSERT INTO t2 SELECT mod(i,100), mod(i,100)
FROM generate_series(1,1000000) s(i);
CREATE STATISTICS s2 (mcv) ON a, b FROM t2;
ANALYZE t2;
-- подÑ
одÑÑÐ°Ñ ÐºÐ¾Ð¼Ð±Ð¸Ð½Ð°ÑÐ¸Ñ (вÑ
Ð¾Ð´Ð¸Ñ Ð² MCV)
EXPLAIN ANALYZE SELECT * FROM t2 WHERE (a = 1) AND (b = 1);
-- неподÑ
одÑÑÐ°Ñ ÐºÐ¾Ð¼Ð±Ð¸Ð½Ð°ÑÐ¸Ñ (не вÑ
Ð¾Ð´Ð¸Ñ Ð² MCV)
EXPLAIN ANALYZE SELECT * FROM t2 WHERE (a = 1) AND (b = 2);СпиÑок знаÑений MCV даÑÑ Ð¿Ð»Ð°Ð½Ð¸ÑовÑÐ¸ÐºÑ Ð±Ð¾Ð»ÐµÐµ ÑоÑное пÑедÑÑавление о ÑамÑÑ ÑаÑÑÑÑ Ð·Ð½Ð°ÑениÑÑ Ð² ÑаблиÑе, а Ñакже веÑÑ Ð½ÑÑ Ð³ÑаниÑÑ Ð¸Ð·Ð±Ð¸ÑаÑелÑноÑÑи Ð´Ð»Ñ ÐºÐ¾Ð¼Ð±Ð¸Ð½Ð°Ñий, оÑÑÑÑÑÑвÑÑÑÐ¸Ñ Ð² ней, благодаÑÑ ÑÐµÐ¼Ñ Ð¾Ð½ Ð¼Ð¾Ð¶ÐµÑ Ð²ÑÑабоÑаÑÑ Ð±Ð¾Ð»ÐµÐµ ÑоÑнÑе оÑенки в Ð¾Ð±Ð¾Ð¸Ñ ÑлÑÑаÑÑ .
СоздайÑе ÑаблиÑÑ t3 Ñ Ð¾Ð´Ð½Ð¸Ð¼ полем timestamp и вÑполниÑе запÑоÑÑ, ÑодеÑжаÑие вÑÑÐ°Ð¶ÐµÐ½Ð¸Ñ Ñ ÑÑим ÑÑолбÑом. Ðез ÑаÑÑиÑенной ÑÑаÑиÑÑики планиÑовÑик не Ð¸Ð¼ÐµÐµÑ Ð¸Ð½ÑоÑмаÑии о ÑаÑпÑеделении даннÑÑ
Ð´Ð»Ñ ÑÑиÑ
вÑÑажений и иÑполÑзÑÐµÑ Ð¾Ñенки по ÑмолÑаниÑ. ÐланиÑовÑик Ñакже не понимаеÑ, ÑÑо знаÑение даÑÑ, ÑÑеÑÑнное до меÑÑÑев, полноÑÑÑÑ Ð¾Ð¿ÑеделÑеÑÑÑ Ð·Ð½Ð°Ñением даÑÑ, ÑÑеÑÑнной до дней. ÐаÑем поÑÑÑойÑе ÑÑаÑиÑÑики вÑÑажений и ÑÑаÑиÑÑÐ¸ÐºÑ ndistinct по ÑÑим вÑÑажениÑм:
CREATE TABLE t3 (
a timestamp
);
INSERT INTO t3 SELECT i FROM generate_series('2020-01-01'::timestamp,
'2020-12-31'::timestamp,
'1 minute'::interval) s(i);
ANALYZE t3;
-- оÑенки колиÑеÑÑва ÑовпадаÑÑиÑ
ÑÑÑок бÑдÑÑ ÑÑÑеÑÑвенно заниженÑ:
EXPLAIN ANALYZE SELECT * FROM t3
WHERE date_trunc('month', a) = '2020-01-01'::timestamp;
EXPLAIN ANALYZE SELECT * FROM t3
WHERE date_trunc('day', a) BETWEEN '2020-01-01'::timestamp
AND '2020-06-30'::timestamp;
EXPLAIN ANALYZE SELECT date_trunc('month', a), date_trunc('day', a)
FROM t3 GROUP BY 1, 2;
-- поÑÑÑоиÑÑ ÑÑаÑиÑÑÐ¸ÐºÑ ndistinct по двÑм вÑÑажениÑм (ÑÑаÑиÑÑика по
-- оÑделÑнÑм вÑÑажениÑм ÑÑÑоиÑÑÑ Ð°Ð²ÑомаÑиÑеÑки)
CREATE STATISTICS s3 (ndistinct) ON date_trunc('month', a), date_trunc('day', a) FROM t3;
ANALYZE t3;
-- ÑепеÑÑ Ð¾Ñенки колиÑеÑÑва ÑÑали более ÑоÑнÑми:
EXPLAIN ANALYZE SELECT * FROM t3
WHERE date_trunc('month', a) = '2020-01-01'::timestamp;
EXPLAIN ANALYZE SELECT * FROM t3
WHERE date_trunc('day', a) BETWEEN '2020-01-01'::timestamp
AND '2020-06-30'::timestamp;
EXPLAIN ANALYZE SELECT date_trunc('month', a), date_trunc('day', a)
FROM t3 GROUP BY 1, 2; Ðез ÑÑаÑиÑÑики вÑÑажений и ndistinct планиÑовÑик не Ð¸Ð¼ÐµÐµÑ Ñведений о колиÑеÑÑве ÑазлиÑнÑÑ
знаÑений по вÑÑажениÑм и поÑÑÐ¾Ð¼Ñ Ð´Ð¾Ð»Ð¶ÐµÐ½ полагаÑÑÑÑ Ð½Ð° оÑенки по ÑмолÑаниÑ. ÐÑи ÑÑом пÑедполагаеÑÑÑ, ÑÑо ÑÑÐ»Ð¾Ð²Ð¸Ñ ÑавенÑÑва и вÑ
Ð¾Ð¶Ð´ÐµÐ½Ð¸Ñ Ð² диапазон имеÑÑ Ð¸Ð·Ð±Ð¸ÑаÑелÑноÑÑÑ 0.5%, а ÑиÑло ÑазлиÑнÑÑ
знаÑений в вÑÑажении пÑедполагаеÑÑÑ Ñаким же, как и в ÑÑолбÑе (Ñо еÑÑÑ Ð¿ÑедполагаÑÑÑÑ ÑникалÑнÑе знаÑениÑ). ÐÑледÑÑвие ÑÑого оÑенка колиÑеÑÑва ÑÑÑок в пеÑвÑÑ
двÑÑ
ÑÑÑокаÑ
оказÑваеÑÑÑ ÑÑÑеÑÑвенно заниженной. Ðолее Ñого, планиÑовÑик не Ð¸Ð¼ÐµÐµÑ Ð¸Ð½ÑоÑмаÑии о ÑвÑзанноÑÑи вÑÑажений и поÑÑÐ¾Ð¼Ñ Ð¾Ð½ пÑедполагаеÑ, ÑÑо ÑÑÐ»Ð¾Ð²Ð¸Ñ WHERE и GROUP BY незавиÑимÑ, и пеÑÐµÐ¼Ð½Ð¾Ð¶Ð°ÐµÑ Ð¸Ñ
избиÑаÑелÑноÑÑи, ÑÑо даÑÑ Ð·Ð½Ð°ÑиÑелÑно завÑÑеннÑÑ Ð¾ÑÐµÐ½ÐºÑ ÐºÐ¾Ð»Ð¸ÑеÑÑва гÑÑпп в запÑоÑе Ñ Ð°Ð³ÑегиÑованием. ÐÑо еÑÑ Ð±Ð¾Ð»ÑÑе ÑÑÑгÑблÑеÑÑÑ Ð½ÐµÑ
ваÑкой ÑоÑной ÑÑаÑиÑÑики Ð´Ð»Ñ Ð²ÑÑажений, вÑледÑÑвие Ñего планиÑовÑик вÑнÑжден иÑполÑзоваÑÑ Ð´Ð»Ñ Ð²ÑÑÐ°Ð¶ÐµÐ½Ð¸Ñ Ð¾ÑÐµÐ½ÐºÑ ndistinct по ÑмолÑаниÑ, полÑÑеннÑÑ Ð¸Ð· ÑÑаÑиÑÑики ndistinct Ð´Ð»Ñ ÑÑолбÑа. Ðднако Ñ Ð½Ð¾Ð²Ð¾Ð¹ ÑÑаÑиÑÑикой планиÑовÑик понимаеÑ, ÑÑо ÑÑÐ»Ð¾Ð²Ð¸Ñ ÑвÑзанÑ, и даÑÑ Ð³Ð¾Ñаздо более ÑоÑнÑе оÑенки.
СовмеÑÑимоÑÑÑ
Ðоманда CREATE STATISTICS оÑÑÑÑÑÑвÑÐµÑ Ð² ÑÑандаÑÑе SQL.