Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oracle:SQL优化-第2部分_Sql_Oracle - Fatal编程技术网

Oracle:SQL优化-第2部分

Oracle:SQL优化-第2部分,sql,oracle,Sql,Oracle,如何优化下面的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 T

如何优化下面的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行。事实表包含2000万条记录


提前谢谢

您是否获得性能调整EM包的许可证?如果是这样,我将首先执行查询并运行SQL调优顾问。如果不了解更多关于SQL语句的表和索引的信息,就很难对SQL语句有太多的帮助


也就是说,当您使用IN子查询进行筛选时,事情往往会运行缓慢。从逻辑上讲,每个可能的结果都会执行该子查询。如果您可以将其重写为不使用子查询,那么您可能会有更好的运气;我很幸运地将这样的子查询转换为非层次查询中的JOIN语句。

向我们展示您的表、索引和查询计划。