Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 计算有限深度树中的子级数_Mysql_Sql_Tree_Parent Child - Fatal编程技术网

Mysql 计算有限深度树中的子级数

Mysql 计算有限深度树中的子级数,mysql,sql,tree,parent-child,Mysql,Sql,Tree,Parent Child,我在MySQL中有一个树结构,每个节点使用一个parent_id字段。这个结构相当大,但只有大约8层深。每个节点还有一个子计数器字段 我正在寻找一种性能良好的方法来计算和更新每个节点的子节点数量,包括子节点的子节点等,最好不要使用太多的SQL调用。我不希望这是超快的,只是足够好 我希望在算法迭代时,可能会有一些方法来进行大规模更新。我以前也实现过类似的功能,但不完全是这样。您是否能够在每个节点上存储一个深度整数,以在树中标记其深度?如果是这样的话,您可以使用8个查询来实现这一点,如果索引正确,这

我在MySQL中有一个树结构,每个节点使用一个parent_id字段。这个结构相当大,但只有大约8层深。每个节点还有一个子计数器字段

我正在寻找一种性能良好的方法来计算和更新每个节点的子节点数量,包括子节点的子节点等,最好不要使用太多的SQL调用。我不希望这是超快的,只是足够好


我希望在算法迭代时,可能会有一些方法来进行大规模更新。

我以前也实现过类似的功能,但不完全是这样。您是否能够在每个节点上存储一个深度整数,以在树中标记其深度?如果是这样的话,您可以使用8个查询来实现这一点,如果索引正确,这将是非常合理的。像这样的东西我觉得手边没有mysql。您可以从最低深度即8向上查询: 更新节点集child\u counter=从parent\u id=id的节点选择SUMchild\u counter+从parent\u id=id的节点选择COUNT0,其中depth=x

这是一篇好文章:


您当前使用的是带有附加计数列的邻接列表模型。但是实际上,从分层数据中获取的数据看起来像嵌套集合模型那样容易建模。

我们最初考虑了这种方法,但当时并不合适。现在是时候了,我们没有时间这么大幅度地改变系统了……我们花了一整天的时间在各种选项上玩来玩去,才意识到您的解决方案是迄今为止最快的,谢谢!