在Sql server中获取二叉树中的子计数

时间:2014-12-11 15:14:28

标签: sql sql-server count binary-tree recursive-query

我有一个基于以下结构enter image description here

的遗留系统系统

有一个用户ID,名称,父级和侧面。这边是tinyint(0 =左,1 =右),这意味着当前用户所在的一侧。

现在我只想拥有特定节点的子节点数。 我有一个递归解决方案,但随着数据大小的增加而停止。

 WITH MyCTE AS (
         SELECT  node.username, node.referenceID
         FROM Members as node        
         WHERE node.referenceID = 'humansuceess10'       
         UNION ALL     SELECT parent.username, parent.referenceID   
         FROM Members  as parent , MyCTE as x     
         WHERE x.username=  parent.referenceID   
         )      SELECT  COUNT(username)  FROM MyCTE option (maxrecursion 0) ;

我已经在15000条记录上测试了这个查询,不幸的是它卡住并导致超时错误。

我正在寻找一种非递归解决方案。

0 个答案:

没有答案