无限制深度与级别的树形结构数据库中定义表结构如下
字段1 字段2
记录ID 父节点记录ID构成一个自关联的树形层次结构,现在用树形控件TreeView显示它
加载方法如下:
1.一次查询全部记录,遍历记录集,把数据全部ADD到TreeView控件中显示(非层次结构显示)
2.遍历TreeView,用movechild方法,按照 记录ID 、 父节点记录ID 关系调整结构为树形层次结构。
问题是当节点多与层次复杂时,加载非常慢(出现了迪卡尔乘积)
高手有没有好的算法?不想改变库结构设计
谢谢!
字段1 字段2
记录ID 父节点记录ID构成一个自关联的树形层次结构,现在用树形控件TreeView显示它
加载方法如下:
1.一次查询全部记录,遍历记录集,把数据全部ADD到TreeView控件中显示(非层次结构显示)
2.遍历TreeView,用movechild方法,按照 记录ID 、 父节点记录ID 关系调整结构为树形层次结构。
问题是当节点多与层次复杂时,加载非常慢(出现了迪卡尔乘积)
高手有没有好的算法?不想改变库结构设计
谢谢!
数据库原始数据---视图数据---排序(这很重要,主要是确定树形的LEVEL)---算法
其实调整节点只需要遍历一次就行了!
------
想问一下:1. 你用THashedStringList了吗?
2. 单独“遍历数据集”的时间是多少?
设断点跟踪了一下IndexOf(AnsiString(ndata->pid)))) 是不占时间的
遍历数据集因该1秒左右
我的节点是三种结构数据拼成的,所以可能慢点吧