【发布时间】:2010-10-09 10:45:18
【问题描述】:
我有一个正在执行递归的 CTE。想象问题空间的最简单方法是在世界各地的汽车中使用的电阻器,并且您拥有所有这些信息。电阻器 A 用于板 B 和 C,用于 DashAssembly D、E、F...ZZ,用于汽车 AAA、AAB 和 AAC。
我得到了一个零件的 CTE,检查了结果,一切都很好(使用 100 的 MAXRECURSION)。然后我添加了一个在零件树中更常见的零件。轰,坏了。我尝试将 MAXRECURSION 提高到 32767,但它仍然坏了。查看数据,这个特定的部分在所有地方都被使用。在第二级递归中,它有 426 个父级。依此类推,我认为是 6 级递归。这是有道理的(我认为)这是轰炸MAXRECURSION。
下一个问题是,B 计划是什么?我从来没有做过任何不使用 CTE 的递归。
更新:答案是:确保您没有任何循环引用,并确保您的递归表正确过滤了它的连接(我没有正确执行第二个连接)。基本上我搞砸了,并认为我的问题是我疯狂的狂野数据,而不是我蹩脚的 sql 技能。
【问题讨论】:
-
我没有获得数百个级别,我有一个用于数百个其他部分的部分。我怀疑递归的级别不超过 12 级。它不深,但可以很宽。
标签: sql-server recursion common-table-expression