首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Oracle : SQL优化-第2部分

Oracle : SQL优化-第2部分
EN

Stack Overflow用户
提问于 2011-10-13 08:25:47
回答 1查看 55关注 0票数 0

我如何优化下面的SQL?这个查询永远不会运行:(

代码语言:javascript
复制
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万条记录。

提前谢谢。:)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-10-15 06:16:37

您是否获得了性能调优EM包的许可?如果是这样,我将从执行查询并运行SQL Tuning Advisor开始。如果不了解更多关于表和索引的信息,就很难在SQL语句方面为您提供太多帮助。

也就是说,当您使用IN (SUBQUERY)进行过滤时,事情往往运行得很慢。从逻辑上讲,该子查询将针对每个可能的结果执行。如果您可以重写它而不使用子查询,那么您可能会有更好的运气;我曾幸运地将这样的子查询转换为非分层查询中的连接语句。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7748103

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档