通常,只有表和索引文件的内容将被缓存在共享缓冲区中。
查询计划在某些情况下被缓存。确保这一点的最佳方法是一次PREPARE查询,然后每次执行。
查询的结果不会自动缓存。如果您重新运行相同的查询 – 即使它是字母相同的信息,并且没有对数据库执行更新 – 它仍将执行整个计划。当然,它将利用已经在共享缓冲区缓存中的任何表/索引数据;所以不一定要再次读取磁盘中的所有数据。
计划缓存更新
计划缓存通常在每个会话中完成。这意味着只有使计划可以使用缓存版本的连接。其他连接必须使用自己的缓存版本。这不是一个真正的性能问题,因为与重新使用计划相关的保存几乎总是与连接成本相比是微不足道的。 (除非你的查询真的很复杂)
如果您使用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
希望有人可以详细说明任何其他查询计划缓存的情况。