您将如何从性能最佳的数据库中获取树状数据?例如,假设您在数据库中具有文件夹层次结构。其中,文件夹数据库行具有 ID ,名称和 ParentID 列。
您是否会使用一种特殊的算法一次获取所有数据,从而最大程度地减少数据库调用并以代码进行处理?
还是您会使用对数据库的多次调用并直接从数据库中完成结构?
也许基于x的数据库行数,层次深度或其他原因有不同的答案?
编辑:我使用Microsoft SQL Server,但从其他 Angular 来看,答案也很有趣。
最佳答案
这实际上取决于您将如何访问树。
一种聪明的技术是给每个节点一个字符串ID,其中父代ID是子代的可预测子字符串。例如,父级可以是“01”,子级可以是“0100”,“0101”,“0102”等。这样,您可以使用以下方法从数据库中一次选择整个子树:
SELECT * FROM treedata WHERE id LIKE '0101%';
由于条件是初始子字符串,因此ID列上的索引将加快查询速度。
关于sql - 针对树结构的优化SQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/317322/