キー/値ストアからFDWテーブルのセットを介してデータを公開しています。 Postgresは小さなサブセットしか必要としないときに頻繁にテーブル全体をスキャンすることを余儀なくされる点を除いて、すべてうまく動作します。例えば外部データラッパーのWHERE句の条件へのアクセス
:
SELECT * FROM人PERSON_ID = 'WLW001';
最後にLIMIT 1を追加しない限り、すべての人物の行を検索します。
私のキー/バリューストアでは、適切なレコードを直接見つけるために、キーの一部として "WLW001"を渡すだけです。
つまり、キー/値ストアにクエリを最適化するために、WHERE句の条件を見つける必要があります。私はFDWの例とドキュメントの多くを見てきましたが、RelOptInfoやscan_clausesリストやヘルパー関数を使ってこの情報を取得する方法は何も見つかりません。
また、SELECTステートメントにパラメーターマーカーが含まれている場合は、マーカーの値を代入する必要があるようです。どこで値を見つけるのですか?
どのキー/バリューストアデータラッパーを使用していますか?一部のデータ・ラッパーは、送信される行数を減らすために、リモート・サーバー上でWHERE条件を処理することができます。ファイルストアのfdwの場合は、ファイル全体を取得して完全にスキャンする可能性があります。 'plperlu'を使って、自分のニーズに合ったロジックでデータを取得する独自のストアドプロシージャを作成することもできます。 –
キー/値ストアは独自のもので、テラバイト単位のデータにアクセスするために使用されます。キーはマルチパートです。ですから、WHERE条件をキーに入れることができれば、興味のあるレコードに直接行くことができます。 –
データストアはどのような形式ですか?どの外部データラッパーを使用していますか? –