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