В соответствии с документацией :
Для тех, кто заинтересован в дальнейших деталях, оценка размера таблицы (до любых предложений WHERE) выполняется в src / backend / оптимизатор / Util / plancat. c. Общий c logi c для выбора предложений находится в src / backend / optimizer / path / clausesel. c. Специфичные для оператора c функции селективности в основном находятся в src / backend / utils / adt / selfuncs. c.
это функция, которая вычисляет оценки для функций:
/*
* function_selectivity
*
* Returns the selectivity of a specified boolean function clause.
* This code executes registered procedures stored in the
* pg_proc relation, by calling the function manager.
*
* See clause_selectivity() for the meaning of the additional parameters.
*/
Selectivity
function_selectivity(PlannerInfo *root,
Oid funcid,
List *args,
Oid inputcollid,
bool is_join,
int varRelid,
JoinType jointype,
SpecialJoinInfo *sjinfo)
{
Похоже, эта C функция будет читать данные в системном каталоге pg_pro c, где мы имеем:
postgres=# select proname, prosupport, prorows
from pg_proc
where proname like '%generate%';
proname | prosupport | prorows
------------------------------+------------------------------+---------
generate_subscripts | - | 1000
generate_subscripts | - | 1000
generate_series | generate_series_int4_support | 1000
generate_series | generate_series_int4_support | 1000
generate_series_int4_support | - | 0
generate_series | generate_series_int8_support | 1000
generate_series | generate_series_int8_support | 1000
generate_series_int8_support | - | 0
generate_series | - | 1000
generate_series | - | 1000
generate_series | - | 1000
generate_series | - | 1000
(12 rows)
Похоже, что столбец pg_pro c .prorows - это извлеченный оценка.