次号のためにご協力をお願いします。本当の問題ですが、例のように提示します。
以下のように構成されたビューがあります
viewa =
sel * from
(
calendar_dim
inner join
(
sel * from table_a
inner join table_b
union all
sel * from table_c
inner join table_D
)
on...
)
すべてのテーブル、table_a table_b table_c table_d には同じ pi 列とパーティション列があり (最初のパーティション レベルは日付にあります)、統計は最新です。
私の質問は次のとおりです。
次のようなクエリを実行しようとすると
sel *
from viewa
where cal_Date = '2013-05-31'
-->> the explain plan works perfect. It takes only one partition from each table and produce the result.
同じことが複数の date 、 /...... where cal_Date in ('2013-05-31','','',.......) でも起こります (正しい数のパーティションが必要です)。
しかし、このビューを 10 個の異なる日付を含むテーブルと内部結合しようとすると、ビューの各テーブルから 10 個のパーティションがこのスプールを外部テーブルと内部結合するのを待っていました。
sel a.*
from viewa a
inner join table_e b
on a.cal_Date = b.cal_Date
ビューの各テーブルからすべてのアンプを取得してから、外部テーブルを複製します。問題は、ビュー内の 4 つのテーブルが非常に大きく、約 10 億行あることです。
これに対する解決策は?
私は、期待される明確な日付のみを含む揮発性テーブル (1 つの列 = 日付) を作成しようとしましたが、何も含まれていません。それでも同じ動作です。