我有一个 PostgreSQL 9.6 服务器连接到远程 9.3 服务器。
我正在尝试创建以下物化视图:
CREATE MATERIALIZED VIEW test AS
SELECT id
FROM remote.logs
WHERE remote.logs.created_at > (now() - interval '1 day')
它很慢,因为过滤是在本地服务器上完成的。
这是解释分析结果:
Foreign Scan on integration.logs (cost=100.00..219.69 rows=975 width=4)
Output: id
Filter: (logs.created_at > (now() - '1 day'::interval))
Remote SQL: SELECT id, created_at FROM public.logs
如何在远程服务器上进行条件过滤?
注意:远程过滤正在使用这样的查询:
CREATE MATERIALIZED VIEW test AS
SELECT id
FROM integration.logs
WHERE integration.logs.created_at > (timestamp 'now()' - interval'1 day')
Foreign Scan on integration.logs (cost=100.00..166.06 rows=975 width=4)
Output: id
Remote SQL: SELECT id FROM public.logs WHERE ((created_at > '2017-05-31 11:44:10.89017'::timestamp without time zone))
但是有了这个,每次我刷新视图时,日期已经被计算出来并停留在上面的例子中 2017-05-31 11:44:10.89017
有任何想法吗 ?
谢谢并恭祝安康