【发布时间】:2012-06-28 16:40:47
【问题描述】:
有两张桌子
t1 { id, name, ...}
t2 { t1_id , date_time, parameter, value, ...}
t1 和 t2 是 oracle 分区表。 t2 很大。
我想获取与 t2 的时间范围匹配的 t1:
select id, name, ... from t1 partition(t1_partition_name)
where t1.id in( select distinct t1_id from t2 partition(t2_partition_name)
where date_time > to_date('20120627 00','YYYYMMDD HH24')
and date_time <to_date('20120627 12','YYYYMMDD HH24')
)
子查询将返回大约 10K t1_id。 真的很慢,有什么建议吗?
【问题讨论】:
-
两个表上的分区方案是什么,是否有任何索引(全局/本地)?数据量是多少(基数、行大小)?
-
删除
distinct。它使用哈希来进行连接?可以发一下执行计划吗? -
执行计划会有帮助
标签: sql oracle optimization semi-join