公式documentからは、計画を実行するためにパーティション化されたテーブルとパーティション化されていないテーブルをチェックするのに多くの時間を費やしているようです。そのような場合、なぜオフモードがあるのですか?PostgreSQL:constraint_exclusionをオフにする必要があるのはいつですか?
ありがとうございました
公式documentからは、計画を実行するためにパーティション化されたテーブルとパーティション化されていないテーブルをチェックするのに多くの時間を費やしているようです。そのような場合、なぜオフモードがあるのですか?PostgreSQL:constraint_exclusionをオフにする必要があるのはいつですか?
ありがとうございました
私はあなたがドキュメントを誤解していると思います。
を無効にすると、constraint_exclusion
を無効にする必要があります。そうしないと、すべてのパーティションが常にスキャンされるため、クエリの実行中にパーティションを作成するメリットはありません。
一方、パーティション化を使用せず、クエリ内に条件が定期的に表示されるテーブルにチェック制約がない場合は、計画時間を節約してconstraint_exclusion
を無効にします。
疑問がある場合は、デフォルト値(通常は良いアイデア)を付けてください。
その9.1ドキュメント。バージョン以上では、パーティション分割は不完全でした。データを複数のパーティションに分割するためのトリガーを作成する必要があります。あなたがそのトリガを確実にしていない場合は、を設定してください。constraint_exclusionをオフにしてください。