代码之家  ›  专栏  ›  技术社区  ›  jcollum

当我用CTE遍历maxRecursion时应该怎么做?

  •  2
  • jcollum  · 技术社区  · 15 年前

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

    我让CTE处理一个部分,检查结果,一切都很好(使用最大递归100)。然后我添加了一个在部分树中更常见的部分。吊杆,断裂。我试着把maxrecursion提升到32767,但它还是坏了。查看数据时,这个特定的部分会在各处使用。在递归的第二级,它有426个父级。等等,我认为是6级递归。这是有道理的(我认为)这是轰炸了maxrecursion。

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

    更新 :答案是:确保没有任何循环引用,并确保递归表正确筛选其联接(我没有正确执行第二个)。基本上,我觉得我的问题是我的疯狂数据,而我的糟糕的SQL技能。

    1 回复  |  直到 15 年前
        1
  •  1
  •   chaos    15 年前

    大多数情况下,如果您达到了递归限制,则会将该限制提升到$bignum,并且仍然达到该限制,这意味着您有一个循环引用。

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