sql - 针对树结构的优化SQL

标签 sql sql-server tree-structure

您将如何从性能最佳的数据库中获取树状数据?例如,假设您在数据库中具有文件夹层次结构。其中,文件夹数据库行具有 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/

相关文章:

javascript - 无法读取属性 "match"(nestedSortable)

php - 在使用 php foreach 和通过引用传递时遇到困难

Visual Studio 2012 上的 sqlschemacompare

sql - 计算列中的值

SQL - Friendship 表的最佳实践

mongodb - 在 MongoDB 中对集合进行递归搜索

没有子查询的 MySQL 组内聚合 - 建议的测试数据已更新

sql - 如何以每条记录都与 "previous"记录连接的方式自连接表?

sql - SSIS - OLEDB 源代码 - 如何使用带变量的 sql 查询?

ios - 在树结构TableView中遍历到叶节点iOS