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 | パターンに文字列が一致しない | |
| !~~ | ||
| 日付/時刻演算子 | + | 日付/時刻の和 |
| - | 日付/時刻の差 | |
| * | 日付/時刻の積 | |
| / | 日付/時刻の商 |