我有一个Rails/ActiveRecord服务器,通过原生gem利用Postgres。我想知道Postgres是否/如何重用查询计划。例如,假设我的应用程序有这样的内容:
ActiveRecord::Base.execute("select foo from t where id=5")
ActiveRecord::Base.execute("select foo from t where id=7")Posgres会知道第二个SQL几乎与第一个完全相同,并重用现有的查询计划吗?
我不是在寻找“只使用模型!”的答案。或者什么不是;我只是想知道数据库中发生了什么。
发布于 2011-08-04 10:16:19
我认为postgresql不会缓存这样的计划。当不同的常量传递给查询时,最佳计划可以是不同的。因此,生成新计划要比使用非最优计划更好。如果您需要这样的缓存,您可以使用准备好的语句或pl/pgsql函数。
https://stackoverflow.com/questions/6935193
复制相似问题