ruby-on-rails - Postgres 是否在服务器上进行语句缓存?

标签 ruby-on-rails postgresql

我有一个通过 native gem 使用 Postgres 的 Rails/ActiveRecord 服务器。 我想知道 Postgres 是否/如何重用查询计划。 例如,假设我的应用有这样的东西:

ActiveRecord::Base.execute("select foo from t where id=5")
ActiveRecord::Base.execute("select foo from t where id=7")

Posgres 会知道第二个 SQL 与第一个几乎相同并重用现有的查询计划吗?

我不是在寻找“只使用模型!”的答案。或者什么不是;我只是想知道数据库中发生了什么。

最佳答案

我认为 postgresql 不会缓存这样的计划。当不同的常量传递给查询时,最优计划可能不同。所以生成新计划比使用非最优计划更好。如果您需要这样的缓存,您可以使用准备好的语句或 pl/pgsql 函数。

关于ruby-on-rails - Postgres 是否在服务器上进行语句缓存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6935193/

相关文章:

ruby-on-rails - Rails state_machine - 条件验证?

ruby-on-rails - 使用 validates_associated 在多态关联中进行验证

mysql - 为什么我无法设置 Rails 迁移中 float 的精度和比例?

html - 浏览器读取 CSS 但不渲染它?

sql - 返回任意类型的 PostgreSQL 函数

python - sqlalchemy 在多个表上联接和排序

javascript - Rails Assets 管道挂起

php - 如何获取 pg_last_error 的特定部分

sql - Symfony2 Orderby特定字段值优先

postgresql - 如何将 postgresql 9.4 jsonb 转换为没有函数/服务器端语言的对象