которой таблицы могут содержать десятки миллиардов записей, count() выполняется по полчаса.
При использовании
SELECT reltuples FROM pg_class WHERE relname = "table" примерный результат в 300 раз меньше реального.
Есть ли способ, быстро подсчитать число записей, без уменьшения скорости записи?
Триггерами вести учёт, выдавать готовый результат. Предупреждаю: простой вариант триггера (добавили единичку в таблицу при добавлении/вычсли при удалении) -- эффективно сериализует запись в таблицу, роняя скорость, например (если что) до лимита IOPS hdd. Надо сложнее подохдить.
\set relname users SELECT (reltuples/relpages*pg_relation_size(:'relname')/8192)::bigint FROM pg_class WHERE oid = :'relname'::regclass;
Спасибо, попробуем.
Обсуждают сегодня