2017-05-10 8 views
2

状況:Postgresの外国データラッパー集計関数プッシュダウン

  • Iテーブルテーブル(foreign_table)は、Postgresデータベース(DB1)
  • に私は、DB2(別のPostgresデータベースにforeign_tableする外国日付ラッパーを作成します)私は、DB2
  • このクエリは、(fetch_sizeによって設定された)100行のバッチでDB1しforeign_tableの内容全体を返すから "foreign_tableからSELECT COUNT(*)" を行うpostgres_fdw
  • を使用。

問題:これは、クエリはforeign_tableは約100万行を持っていると信じられないほど遅いことが原因

私の質問:

カウント(*)は、リモートPostgresデータベース上で実行されるように、この集約関数を「押し下げ」することは可能ですか?

答えて

1

あなたはこの回避策を使用し、Postgresの10のを待つしたくない場合は、次の

は、外国のデータベース内のビューを作成します。

-- in db1: 
create view count_my_table as (
    select count(*) 
    from foreign_table); 

をローカルデータベース内のビューのための外部テーブルを作成します。

-- in db2: 
create foreign table count_my_table (
    count bigint 
) 
server foreign_server 
options (table_name 'count_my_table'); 

select count 
from count_my_table;