ビューでunnest()を使用し、selectステートメントでそのビューを使用すると、Greenplumは目的のパーティションの検索に失敗し、代わりにメインテーブルのすべてのパーティションを検索するように見えます。ビューの代わりにサブクエリを使用する場合にも同じことが当てはまります。
例えば:
Select something from (select unnest(an_array_field) from table_y)
where date = 'somedate' and state = 'somestate'
現在、2つの異なるバージョンのGreenplumを実行している2つの異なるサーバーがあります。サーバーAは古いバージョン(4.2.1)で実行され、サーバーBは4.2.3で実行されます。上記と同じクエリを実行すると、結果が異なります。サーバーA(古い)は数秒でクエリを返しますが、サーバーB(新しい)は戻るのに永遠にかかります。クエリのExplainを実行すると、サーバーAはパーティションの1つ(where句に日付と状態を含む)でのみスキャンを実行し、サーバーBは各パーティションでスキャンを実行するため、速度が低下することがわかります。
両方のDBのテーブル構造は同じです。悪意のないクエリを実行しても問題はありません。ですから、新しいバージョンと関係があるのではないかと思います。この問題を解決するために私にできることはありますか?