2

我有一个 CTE 正在做一些递归。想象问题空间的最简单方法是在世界各地的汽车中使用的电阻器,并且您拥有所有这些信息。电阻器 A 用于板 B 和 C,用于 DashAssembly D、E、F...ZZ,用于汽车 AAA、AAB 和 AAC。

我让 CTE 与一个零件一起工作,检查了结果,一切都很好(使用 100 的 MAXRECURSION)。然后我添加了一个在零件树中更常见的零件。轰,坏了。我尝试将 MAXRECURSION 提高到 32767,但它仍然坏了。查看数据,这个特定的部分被到处使用。在第二级递归中,它有 426 个父级。依此类推,我认为是 6 级递归。这是有道理的(我认为)这是轰炸MAXRECURSION。

下一个问题是,B计划是什么?我从来没有做过任何不使用 CTE 的递归。

更新:答案是:确保你没有任何循环引用,并确保你的递归表正确过滤了它的连接(我没有正确地做第二个)。基本上我搞砸了,并认为我的问题是我疯狂的狂野数据,而不是我蹩脚的 sql 技能。

4

1 回答 1

1

大多数情况下,如果你达到了递归限制,你将限制增加到 $BIGNUM 并且你仍然在达到它,这意味着你有一个循环引用。

您应该检查以确保您没有任何循环引用并且您的递归表正在正确过滤。

于 2009-02-23T23:11:34.930 回答