使用最少的查询数从数据库中获取分层树

时间:2014-08-27 10:01:42

标签: c# sql tree

现在我有以下表格架构:

Node_Id (INT)| NodeName (nvarchar(40)) | ParentNode(int, FK)

我想从该结构中检索分层树:结构与此结构相似:{NodeId, NodeName, IEnumerable<Node> Children, bool hasChildren}

我看到两个解决这个问题的方法:首先是树遍历。我的意思是加载根节点(其中parent = null)然后为每个节点加载它的子节点并递归地为这些节点执行此操作。但是每个子加载会导致对DB的额外查询,这会影响性能。

我看到的另一个选择是从数据库加载平面结构(与表模式相同),然后从它构建层次结构。这是对应用程序服务器的性能影响。

我想知道是否有其他解决方案?

2 个答案:

答案 0 :(得分:1)

如果您不需要立即显示所有树子项,则可以根据指定的父节点加载,然后在用户展开树子项时按需加载。这将导致应用程序和数据库服务器上的负载更轻。

答案 1 :(得分:0)

除了您已经提到的解决方案之外,您还可以在oracle sql中使用connect by / start。

有关更多信息,请参阅此链接:http://docs.oracle.com/cd/B19306_01/server.102/b14200/queries003.htm