欢迎来到天天文库
浏览记录
ID:37976600
大小:61.46 KB
页数:3页
时间:2019-06-04
《U9树表设计建议》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、U9树表设计建议目的修正目前U9的树表设计方式,提高树表访问效率。U9目前的树表设计方式在检查开发部的存储过程编写过程中,发现很多晦涩的递归或游标循环。这些循环不但容易产生冗余笛卡尔积,在数据量大的时候,很容易成为系统的瓶颈!询问开发人员得知是按照设计部的设计文档(伪码)编写。仔细察看相应文档发现大部分是树表设计的问题。在今年3月份检查U9表结构的时候就发现我们U9的树状结构表大概有80个,但是设计方式都是简单的ID+ParentID方式。虽然表设计的很简洁,但是访问起来却会非常麻烦。在Oracle中有ConnectBy…StartWith语句,它可以只使用ID+ParentID对
2、树表进行方便的遍历。但是我们的SQLServer没有提供相应的机制,只能通过递归循环或游标方式完成对树表的访问。下面是U9目前树表访问的典型例子:虽然可以只通过一个临时表完成循环,但是递归循环不可避免!更好的树表设计针对这种情况,我们可以为U9目前的树表加入TreePath字段解决目前的递归访问问题。见下面例子:表的前面部分还是典型的树表设计方式,但是为了方便访问,加入了TreePath字段。记录了每个子节点到达根节点的全路径。利用上例我们可以对比一下加入TreePath字段后,对树遍历的不同。遍历子节点:遍历父节点:利用TreePath的设计方式,需要在insert的时候将父记录
3、的TreePath+’’作为新记录的TreePath。这一点在技术实现上应该没有什么难度,但是却大大增强了对树表的遍历效率。
此文档下载收益归作者所有