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