【发布时间】:2019-08-05 12:24:01
【问题描述】:
我有 2 个分区表。我想离开他们,这意味着我想要特定日期的表“A”的所有记录,以及表“B”中的数据(如果有任何匹配的记录(也在特定日期))。两个表都是分区的,所以我在where子句中使用分区列(时间),但是在这个查询中,当表'B'中没有任何匹配的记录时,条件'B.time'变为空并且表'A'的记录剂量未出现在结果中。 如果我不使用表'B'的时间条件,它的执行计划将变为 partition range all 并且性能很差。 如何编辑查询?
select * from A left outer join B SSRESP
on A.ID = B.A_ID where
A.time >= to_date('1396/09/26 00:00:00',
'yyyy/mm/dd hh24:mi:ss',
'NLS_CALENDAR=persian')
and A.time <= to_date('1396/10/27 11:00:00',
'yyyy/mm/dd hh24:mi:ss',
'NLS_CALENDAR=persian')
and B.time >=
to_date('1396/09/26 00:00:00',
'yyyy/mm/dd hh24:mi:ss',
'NLS_CALENDAR=persian')
and B.time <=
to_date('1396/10/27 11:00:00',
'yyyy/mm/dd hh24:mi:ss',
'NLS_CALENDAR=persian')
【问题讨论】:
标签: oracle performance partitioning