![]() |
1
1
在进一步的思考中,总共可以使用两个表,一个用于节点(id、name、description),另一个用于关系(id、name、description、from、to), |
![]() |
2
1
可以通过为每个关系创建2行来优化性能。 假设你有一个表项和一个表关系,而那个人a和人B有关系,这个关系表有一个左栏和右栏,都指的是项。现在,如果这个关系只有一行,并且您想要某个项的所有关系,那么您将有一个如下所示的查询:
此查询中的或将破坏您的性能!如果要复制行并切换关系(左变右,反之亦然),则查询如下所示:
有了正确的索引,这个索引将非常快。 |
![]() |
3
0
|
![]() |
4
0
如果没有用于节点的单个表,则必须定义许多关系表。每个新的节点类型都需要一个新的关系表 每一个 旧节点类型。很快就会失控的。 所以一张桌子听起来最好。如果需要特定节点类型的其他字段,则始终可以使用1:1关系来扩展它。 |
![]() |
5
0
如果您使用的是sql server 2008,则可能需要考虑 HierarchyID datatype 以存储您的层次结构。它是为存储而优化的。 |
![]() |
Community wiki · SQL语法新手 1 年前 |
![]() |
KateMak · 是否将多行中的多列与唯一id组合? 1 年前 |
![]() |
Karuna · SQL中列内的筛选器[重复] 1 年前 |
![]() |
Irvan Affandy · 为另一个选择选择声明的键 1 年前 |
![]() |
Community wiki · 这个MySQL语句出了什么问题? 1 年前 |
![]() |
Community wiki · 优化从同一表中提取的多列的查询 1 年前 |