SQL优化:连接...开始

时间:2011-10-14 06:23:09

标签: sql oracle connect-by

我使用CONNECT BYSTART WITH语句进行查询,如下所示。 IN子句中的查询运行时间不到5秒,并返回3000行。 fact_table包含20M的记录。如何在下面优化此SQL,因为此查询需要永远运行:(

SELECT DISTINCT CONNECT_BY_ROOT a.dst_ID_key AS root_ID_key, a.src_ID_key
  FROM fact_table a
  CONNECT BY NOCYCLE PRIOR a.src_ID_key = a.dst_ID_key
   START WITH a.dst_ID_key IN (SELECT b.ID_key
                           FROM TableA b
                           JOIN TableB c
                             ON (c.name = b.name AND c.school = b.school)
                          WHERE b.status = 'Active')

1 个答案:

答案 0 :(得分:0)

使用“in”非常慢 如果此数据不需要实时更新 我想你可以试试这个:
1,不要使用明显的
2,使用表格连接而不是“在”中 3,使用物化视图
希望有所帮助。等待更好的答案。 :)