Index-Only Count

PostgreSQL поддерживает механизм Index-Only Scan, который позволяет возвращать данные непосредственно из индекса, минуя heap, в случае когда все данные страницы heap видны всем транзакциям. Но для того, чтобы Index-Only Scan работал, access method должен уметь вернуть исходные индексированные значения из индекса. Это не всегда возможно: в GIN индексируемое значение разбивается на несколько ключей, в GiST индекс может хранить lossy представление. Однако, даже для таких индексов можно было бы выполнять запросы вида SELECT count(*) с использованием оптимизации, аналогичной Index-Only Scan (можно назвать её Index-Only Count), т.к. исходные индексированные значения в этом случае не нужны.

Сделано