oracle_fdwでは、Oracleに発行してもSELECT結果に影響しないWHERE句の条件を、Oracleに発行するSELECT文のWHERE句に含めます。 これにより、WHERE句に指定した条件を外部サーバで評価して転送データ量を削減したり、CPUリソースを分散使用することが可能です。
oracle_fdwでは、以下の条件を全て満たした場合にWHERE句に指定した条件がpush downされます。 最上位のANDで連結されたそれぞれの条件ごとにpush downできるかどうかを判断します。
ただし、以下の条件が当てはまる場合はpush downされません。
WHERE句に指定した条件がpush downされるかどうかは、EXPLAINコマンドで確認できます。
oracle_fdwがWHERE句にpush downする演算子の一覧を以下に示します。
種別 | 演算子名 | 説明 |
---|---|---|
論理演算子 | AND | 論理積 |
OR | 論理和 | |
NOT | 否定 | |
比較演算子 | < | 小なり |
> | 大なり | |
<= | 等しいかそれ以下 | |
>= | 等しいかそれ以上 | |
= | 等しい | |
<> | 等しくない | |
!= | ||
a BETWEEN x AND y | 範囲内に含まれている | |
a NOT BETWEEN x AND y | 範囲内に含まれていない | |
IS NULL | 値がNULL | |
ISNULL | ||
IS NOT NULL | 値がNULLでない | |
NOTNULL | ||
算術演算子 | + | 数値の和 |
- | 数値の差 | |
* | 数値の積 | |
/ | 数値の商 | |
文字列演算子 | || | 文字列結合 |
パターンマッチ | LIKE | パターンに文字列が一致する |
~~ | ||
NOT LIKE | パターンに文字列が一致しない | |
!~~ | ||
日付/時刻演算子 | + | 日付/時刻の和 |
- | 日付/時刻の差 | |
* | 日付/時刻の積 | |
/ | 日付/時刻の商 |