现在我有以下表格架构:
Node_Id (INT)| NodeName (nvarchar(40)) | ParentNode(int, FK)
我想从该结构中检索分层树:结构与此结构相似:{NodeId, NodeName, IEnumerable<Node> Children, bool hasChildren}
我看到两个解决这个问题的方法:首先是树遍历。我的意思是加载根节点(其中parent = null)然后为每个节点加载它的子节点并递归地为这些节点执行此操作。但是每个子加载会导致对DB的额外查询,这会影响性能。
我看到的另一个选择是从数据库加载平面结构(与表模式相同),然后从它构建层次结构。这是对应用程序服务器的性能影响。
我想知道是否有其他解决方案?
答案 0 :(得分:1)
如果您不需要立即显示所有树子项,则可以根据指定的父节点加载,然后在用户展开树子项时按需加载。这将导致应用程序和数据库服务器上的负载更轻。
答案 1 :(得分:0)
除了您已经提到的解决方案之外,您还可以在oracle sql中使用connect by / start。
有关更多信息,请参阅此链接:http://docs.oracle.com/cd/B19306_01/server.102/b14200/queries003.htm