SQL with order with join两个表优化

时间:2017-12-05 15:25:34

标签: sql oracle query-performance sql-tuning

如何通过加入两个大表并按第一个唯一索引排序来提高性能?

我只需要第一个表格数据排序依据。没有订单查询会表现如此之快。

以下是查询示例

select a.* from T1 a, T2 b where a.c1 = b.c2; 
select a.* from T1 a, T2 b where a.c1 = b.c2 order by a.id;

仅供参考,T1和T2具有适当的指数。

  

T1表计数为" 54483938"
T2表计数为" 54483820"

我对T1数据更感兴趣,在T1上存在T1记录。

我尝试使用in运算符查询,它花了我300秒。

1 个答案:

答案 0 :(得分:2)

您可以尝试查询的三种形式:

  • join(你有)
  • in(您声称已经运行)
  • exists

exists版本是:

select a.*
from T1 a
where exists (select 1 from T2 b where a.c1 = b.c2)
order by a.id;

对于此查询,我建议在T1(id, c1)T2(c2)上建立索引。