我使用CONNECT BY
和START 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')
答案 0 :(得分:0)
使用“in”非常慢
如果此数据不需要实时更新
我想你可以试试这个:
1,不要使用明显的
2,使用表格连接而不是“在”中
3,使用物化视图
希望有所帮助。等待更好的答案。 :)