#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.