Сообщество / Новая тема

Обсуждение статьиПервый комментарий откроет обсуждение — дальше все вопросы по этой статье будут собираться здесь

Об статье:
Почему простой COUNT на большой таблице такой дорогой

Вы добавляете на страницу счётчик «всего заказов: 2 384 917» или пагинацию с общим числом страниц, пишете SELECT COUNT(*) FROM orders, и на таблице в пару десятков миллионов строк запрос вместо ожидаемых миллисекунд выполняется секунды, а то и десятки секунд. Индекс есть, диск не перегружен, а простой подсчёт строк почему-то стоит как полное сканирование таблицы. Это не баг и не кривые руки — так устроена архитектура MVCC, на которой держится PostgreSQL и большинство современных СУБД, и разобраться в причине полезнее, чем в очередной раз чинить симптом.

Подробнее →