我要开发如图所示的用户链。在第 0 级它有一个成员,第 1 级有 2 个,第 2 级有 4 个,第 3 级有 8 个成员..就像明智的第 9 级有 512 个成员,这是最后阶段。
在编程 View 中,要将成员的位置与其右翼和左翼关联到 x
级别,运行 2^x
查询是可悲的。 (对于第 9 级,2^9 次查询将命中 db)
是否有任何其他方法可以减少对数据库的点击次数?如何更好地映射成员之间的关系?
最佳答案
构造树表和区表。树表将包含父项、子项、边作为列。区域表包含用户标识、区域(它应该显示在其中的所有区域,在本例中为 9)和长度(从最顶层父节点开始的长度)作为列。所以在区域表中,第一级节点将有一个条目,第二行节点将有两个条目,类似地,第 9 级节点将有九个条目。
现在,当必须显示一个节点时,要检索其下面的所有节点,编写一个查询,例如 select * from zone where userid=xx
现在将此结果映射到树表以决定哪个节点出现在哪个节点和哪一侧。
关于php - 二叉树映射数据库查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16460045/