テーブルは PostgreSQL 9 データベースで分割されています。次のスクリプトを実行すると:
select * from node_channel_summary
where report_date between '2012-11-01' AND '2012-11-02';
完全なテーブル スキャンを実行せずに、適切なテーブルからデータを送信します。それでも、このスクリプトを実行すると:
select * from node_channel_summary
where report_date between trunc(sysdate)-30 AND trunc(sysdate)-29;
この場合、パフォーマンスが許容できない完全なテーブル スキャンを実行します。-30 と -29 はパラメータに置き換えられます。
いくつかの調査を行った後、Postgres は関数と分割されたテーブルで適切に動作しません。
誰かがこの問題を解決するための回避策を知っていますか?