我希望您对下一个问题有所帮助。这是一个真正的问题,但我将向您展示一个示例。
我有一个视图,其组成如下
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.
同样的情况发生在多个日期,/......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 亿行。
解决方案?
我试图制作一个易失性表(其中一列 = 日期),其中仅包含我所期望的不同日期,但什么也没有。仍然是相同的行为。