Точный COUNT(*) на миллиарде строк может потребовать большого объёма чтения и CPU. Конкретное поведение зависит от СУБД, движка, MVCC и выбранного плана; универсального мгновенного счётчика нет.
У нас есть таблица с миллиардом записей. Если сделать COUNT(*), что произойдёт?
Точный COUNT(*) на миллиарде строк может потребовать большого объёма чтения и CPU. Конкретное поведение зависит от СУБД, движка, MVCC и выбранного плана; универсального мгновенного счётчика нет.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Точный COUNT(*) на миллиарде строк может потребовать большого объёма чтения и CPU. Конкретное поведение зависит от СУБД, движка, MVCC и выбранного плана; универсального мгновенного счётчика нет.
В PostgreSQL нужно определить строки, видимые снимку, поэтому возможен parallel sequential или index-only scan, но не просто чтение точного числа из метаданных. На нагруженной системе запрос может конкурировать за I/O. Если точность не нужна, используют оценку статистики; если нужна часто — поддерживаемый агрегат с ясной транзакционной семантикой. Уточните фильтр, частоту и допустимую свежесть, прежде чем менять архитектуру.