我有一个通过 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/