我如何优化下面的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')in子句中的查询运行时间不到5秒,返回3000行。而FACT_TABLE包含了2000万条记录。
提前谢谢。:)
发布于 2011-10-15 06:16:37
您是否获得了性能调优EM包的许可?如果是这样,我将从执行查询并运行SQL Tuning Advisor开始。如果不了解更多关于表和索引的信息,就很难在SQL语句方面为您提供太多帮助。
也就是说,当您使用IN (SUBQUERY)进行过滤时,事情往往运行得很慢。从逻辑上讲,该子查询将针对每个可能的结果执行。如果您可以重写它而不使用子查询,那么您可能会有更好的运气;我曾幸运地将这样的子查询转换为非分层查询中的连接语句。
https://stackoverflow.com/questions/7748103
复制相似问题