如上所述herepostgres_fdw
無權訪問索引。遠程查詢使用postgres_fdw執行,使用索引
解決方法是在遠程服務器上創建視圖,然後在本地視圖上創建外部表包裝。
但是如果我想將參數傳遞給我的視圖呢?通常我會創建一個function(myparam)
即RETURNS TABLE()
。但是如何通過postgres_fdw
調用它?
解決這種情況的任何想法(如果不需要,不要使用dblink
)?
例
我有這樣的查詢到我的遠程數據庫執行:
select count(f.id_foo)
from foo f
where f.date < _my_date
正如你可以看到有一個PARAM _my_date
內。
所以我創建外部表my_remote_server_public.my_remote_server_public_foo
和本地數據庫一樣運行:
select count(f.id_foo)
from my_remote_server_public.my_remote_server_public_foo f
where f.date < _my_date
但是當我這樣做 - 它持續2-3分鐘becouse postgres_fdw
有foo
指標無訪問。
我想過一個遠程數據庫上創建一個功能get_foo_by_date(_my_date date)
,並通過postgres_fdw
從當地一個稱呼它,但不知道是它甚至有可能...
UPDATE
假設我會處理作爲一個具有固定日期的外部表的普通視圖。
該視圖將返回一個來自遠程表的ID列表。
我想從遠程表中刪除列出的行並將它們歸檔到本地。
當我這樣稱呼它:
EXECUTE
'WITH rows_to_delete
AS (DELETE from my_remote_server_public_foo
WHERE id_foo
IN
(SELECT * FROM my_remote_server_public_view_of_rows_to_delete) RETURNING *)
INSERT INTO my_local_table
SELECT * FROM rows_to_delete';
它持續5分鐘...再次becouse DELETE
查詢有沒有索引訪問......我需要使用dblink
這裏調用一個函數嗎?任何其他解決方法?
你能舉一個你想做的例子嗎? –
@LaurenzAlbe問題更新 – ilovkatie