0

我有一个使用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')
4

1 回答 1

0

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

于 2011-10-14T06:45:42.960 回答