Настройката за целта на статистиката се съхранява на колона в каталожната таблица pg_attribute
. Можете да го настроите така:
ALTER TABLE myschama.mytable ALTER mycolumn SET STATISTICS 127;
И проверете така:
SELECT attstattarget
FROM pg_attribute
WHERE attrelid = 'myschama.mytable'::regclass
AND attname = 'mycolumn';
Или просто погледнете скрипта за създаване в обектния браузър на pgAdmin, където се добавя, ако стойността е различна от стойността по подразбиране в default_statistics_target
.
Цитирам ръководството на attstattarget
:
attstattarget контролира нивото на детайлност на статистическите данни, натрупани за тази колона от
ANALYZE
. Нулева стойност показва, че не трябва да се събират статистически данни. Отрицателна стойност казва да се използва целта на системната статистика по подразбиране. Точното значение на положителните стойности зависи от типа данни. За скаларни типове данни, attstattarget е както целевият брой на „най-често срещаните стойности“ за събиране, така и целевият брой на кошчетата за хистограма за създаване.
Удебелен наблягам мой.
Статистиките за обикновени индексни колони са идентични със статистиките за колони и нямат отделни записи в таблиците със статистически данни. Но Postgres събира отделни статистически данни за индексни изрази . Те могат да бъдат настроени по подобен начин:
ALTER INDEX myschema.myidx ALTER COLUMN 1 SET STATISTICS 128;
При липса на действителни имена на колони, поредните номера се използват за адресиране на индексни колони, които съответстват на pg_attribute.attnum
:
SELECT attstattarget
FROM pg_attribute
WHERE attrelid = 'myschama.myidx'::regclass
AND attnum = 1;
Настройката действително засяга статистиките на колоните следващия път ANALYZE
се изпълнява ръчно или чрез autovacuum
.