Ich habe einen PostgreSQL 9.6 Server Verbindung zu remote 9.3 Server.PostgreSQL fdw und Ansicht, mit Timestamp arbeiten
Ich versuche, die folgende erstellen materialisierte Ansicht:
CREATE MATERIALIZED VIEW test AS
SELECT id
FROM remote.logs
WHERE remote.logs.created_at > (now() - interval '1 day')
Es ist langsam, da die Filterung auf lokalen Server durchgeführt wird.
Hier ist das EXPLAIN ANALYZE Ergebnis:
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
Wie Bedingung Filterung auf dem Remote-Server machen?
Hinweis: Remote-Filterung mit einer solchen Abfrage arbeiten:
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))
Aber mit diesem, jedes Mal, wenn ich die Ansicht refreh hat das Datum bereits berechnet worden und oben zum Beispiel bleiben bei 2017.05.31 11: 44: 10.89017
Irgendwelche Ideen?
Danke und Grüße
Schön! Danke ! Funktioniert wie ein Zauber, auch wenn fdw einfacher und sicherer ist – Luma