Как правило, только содержимое файлов таблиц и индексов будет кэшироваться в общем буферном пространстве.
В некоторых случаях планы запросов кэшируются.Лучший способ убедиться в этом - ПОДГОТОВИТЬ запрос один раз, а затем ВЫПОЛНИТЬ его каждый раз.
Результаты запроса не кэшируются автоматически.Если вы повторно запустите тот же запрос - даже если он идентичен по буквам, и в БД не было выполнено никаких обновлений - он все равно выполнит весь план.Конечно, он будет использовать любые данные таблиц / индексов, которые уже находятся в кеше общих буферов;поэтому не обязательно снова считывать все данные с диска.
Обновление кэширования плана
Как правило, кэширование плана выполняется за сеанс.Это означает, что только соединение, составляющее план, может использовать кэшированную версию.Другие соединения должны создавать и использовать свои собственные кэшированные версии.На самом деле это не проблема производительности, потому что экономия, которую вы получаете от повторного использования плана, почти всегда ничтожна по сравнению со стоимостью подключения в любом случае.(Если ваши запросы действительно сложны.)
Это делает кеш, если вы используете PREPARE: http://www.postgresql.org/docs/current/static/sql-prepare.html
Это делает кешируется, когда запрос находится в функции PL / plSQL: http://www.postgresql.org/docs/current/static/plpgsql-implementation.html#PLPGSQL-PLAN-CACHING
Он не кеширует специальные запросы, введенные в psql.
Надеемся, кто-то ещеможет рассказать о любых других случаях кэширования плана запросов.