Скорость заполнения всех столбцов в postgresql

#postgresql-9.5

#postgresql-9.5

Вопрос:

Я хочу рассчитать скорость заполнения% всех столбцов, присутствующих в моей конкретной базе данных.
Для нулевой доли у нас есть этот запрос:

 SELECT tablename,
       attname,
       null_frac
FROM pg_stats
WHERE schemaname = 'public';
  

Аналогично, как мы можем рассчитать скорость заполнения (%) всех столбцов?

Комментарии:

1. Извините, я не понимаю, что вы имеете в виду под «скоростью заполнения»? Заполнено на основе какого максимума?

2. Здравствуйте. например: столбец содержит 10 записей, но только 5 записей содержат значения, а остальные 5 записей содержат нулевые значения / пустые. Итак, скорость заполнения составляет 50%.

3. таким же образом, если 6 записей содержат значения, а 4 записи содержат нулевые значения / пустые, то скорость заполнения равна 60%

Ответ №1:

На основе официальных документов Postgres null_frac основан на количестве нулевых значений, остальные представляют значения в столбце.
Это 1 - null_frac даст вам скорость заполнения, например

 SELECT attname AS col,
       (1 - null_frac) * 100 AS fill_rate,
       null_frac * 100 AS null_rate,
       fill_rate   null_rate AS total    -- 100%
FROM pg_stats
WHERE schemaname = 'schema_name'
  AND tablename = 'table_name'
;
  

Обратите внимание, что это также работает в AWS Redshift.