我有一些广泛的查询(每个查询持续约90秒)。好消息是我的查询没有太大变化。结果,我的大部分查询都是重复的。我正在寻找一种在PostgreSQL中缓存查询结果的方法。我已经搜索了答案,但找不到(某些答案已经过时,有些还不清楚)。
我使用的应用程序直接连接到Postgres。
该查询是一个简单的SQL查询,它返回数千个数据实例。
SELECT * FROM Foo WHERE field_a<100
是否可以将查询结果至少缓存几个小时?
答案 0 :(得分:1)
可以使用一种称为“物化视图”的技术在postgres中缓存昂贵的查询,但是鉴于您的查询多么简单,我不确定这会给您带来很多好处。
最好将这些信息直接缓存在应用程序的内存中。或者,如果可能的话,缓存进一步处理的数据集,而不是原始行。
ref:
https://www.postgresql.org/docs/current/rules-materializedviews.html
答案 1 :(得分:0)
根据您的应用程序的外观,TEMPORARY TABLE可能适合您。它仅对创建它的连接可见,并且在数据库会话关闭时会自动删除。
CREATE TEMPORARY TABLE tempfoo AS
SELECT * FROM Foo WHERE field_a<100;
此方法的缺点是创建Foo
时会获得tempfoo
的快照。当您查看Foo
时,不会看到任何添加到tempfoo
的新数据。
另一种方法。如果您有权访问数据库,则可以通过在field