Implementing a hierarchical data structure in a database(在数据库中实现分层数据结构)
问题描述
我知道有两种方法:邻接表和嵌套树.据说由于大量查询,邻接列表在遍历时会变得很慢.但我不知道这方面的任何现实数字.我正在制作的网站将有 200 页的区域.生成(例如)站点地图的遍历时间是否会超过大约 0.3 秒?
I know there are two approaches: adjacency list and nested tree. It's said that adjacency list can become slow to use on traversal because of numerous queries. But I don't know any realistic figures for this. The site I'm making will have in the region of 200 pages. Is traversal to generate (for example) a sitemap going to take longer than about 0.3 seconds?
使用 LAMP 堆栈在 MySQL (innoDB) 上运行.
Running on MySQL (innoDB) with LAMP stack.
如果可能,我更喜欢实现邻接,因为设计更简单.
I'd prefer to implement adjacency if possible because of the more simplistic design.
谢谢.
推荐答案
除了您提到的两个之外,还有更多选项.有:
There are more options than just the two you mention. There are:
- 邻接列表(几乎每个人都使用的parent_id")
- 嵌套集
- 路径枚举
- 闭表(又名邻接关系)
查看我对将平面表解析为树的最有效/最优雅的方法是什么?"
或者几本书:
- "Smarties 的 SQL 中的树和层次结构" 作者:乔塞尔科.
- "SQL 设计模式" by Vadim Tropashko.
- "Trees and Hierarchies in SQL for Smarties" by Joe Celko.
- "SQL Design Patterns" by Vadim Tropashko.
这篇关于在数据库中实现分层数据结构的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:在数据库中实现分层数据结构
- 如何使用 pip 安装 Python MySQLdb 模块? 2021-01-01
- 如何将 SonarQube 6.7 从 MySQL 迁移到 postgresql 2022-01-01
- SQL 临时表问题 2022-01-01
- 导入具有可变标题的 Excel 文件 2021-01-01
- 更改自动增量起始编号? 2021-01-01
- 远程 mySQL 连接抛出“无法使用旧的不安全身份验证连接到 MySQL 4.1+"来自 XAMPP 的错误 2022-01-01
- 如何将 Byte[] 插入 SQL Server VARBINARY 列 2021-01-01
- 在SQL中,如何为每个组选择前2行 2021-01-01
- 使用 Oracle PL/SQL developer 生成测试数据 2021-01-01
- 以一个值为轴心,但将一行上的数据按另一行分组? 2022-01-01