有两个表SQL半加入优化
t1 { id, name, ...}
t2 { t1_id , date_time, parameter, value, ...}
T1和T2是预言的分区表。 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'。它使用哈希来完成连接?你能发布执行计划吗? –
执行计划会有帮助 –