【发布时间】:2016-04-01 05:30:11
【问题描述】:
我想知道/学习 NESTED LOOPS 和 Hash join 之间的区别。为此,我发布了这个问题。查询和解释计划很长,这里就不贴了。
我有以下 DBA 的建议,谁能解释一下新的执行计划需要什么?
我认为它需要移除 NESTED LOOPS,如何移除这些 NESTED LOOPS?
【问题讨论】:
-
您是否考虑过与您的 DBA 交谈并询问他们的意思?这是一个老把戏,但它可能会奏效。
-
哪个快? hash 或 NESTED LOOPS,为什么 DBA 建议删除 NESTED LOOPS?
-
@Muhammad 一般来说,嵌套循环最适合从表中选择一小部分行,而 HASH JOIN 在选择大部分行时最好。但这是一个复杂的主题,需要更多信息来回答这个问题。对于初学者来说,使用
explain plan for select ...然后select * from table(dbms_xplan.display);以标准格式发布整个解释计划会有所帮助。另外,查询是什么,DBA 是如何做出改变的?是代码更改、统计、计划管理等吗? -
@JonHeller 我想知道NESTED LOOPS和hash join的区别,My Query和explain plan很长,这里就不加了。
-
@JonHeller 关于嵌套循环和散列连接的好信息。我的查询是一个插入语句,它查询和插入超过 100,000 条记录。所以在我的情况下,嵌套循环非常昂贵。
标签: sql oracle query-optimization sql-execution-plan