Php 在mysql中处理大型递归查询的最佳方法是什么?

Php 在mysql中处理大型递归查询的最佳方法是什么?,php,mysql,recursive-query,Php,Mysql,Recursive Query,使用PHP和Mysql- 我有一份12万名员工的名单。每个都有一个带有主管员工编号的主管字段 我希望构建一个以树状格式显示员工的东西。考虑到这一点,如果你点击任何人,你可以选择下载他们下面的所有员工(及其信息) 所以有两个问题-我应该编写脚本来处理查询(虽然我有,但速度很慢),还是应该创建某种帮助程序表/视图?我正在寻找这背后的最佳实践 而且我相信这已经做了一百万次了。有处理组织层次结构的好类吗?标准方法是使用一个表来存储所有员工,并为员工id设置一个主键字段,以及主管id的一个字段,它是一个“

使用PHP和Mysql-

我有一份12万名员工的名单。每个都有一个带有主管员工编号的主管字段

我希望构建一个以树状格式显示员工的东西。考虑到这一点,如果你点击任何人,你可以选择下载他们下面的所有员工(及其信息)

所以有两个问题-我应该编写脚本来处理查询(虽然我有,但速度很慢),还是应该创建某种帮助程序表/视图?我正在寻找这背后的最佳实践


而且我相信这已经做了一百万次了。有处理组织层次结构的好类吗?

标准方法是使用一个表来存储所有员工,并为员工id设置一个主键字段,以及
主管id
的一个字段,它是一个“自联接”-这意味着该字段中的值指向该员工主管的员工id。至于显示员工树-对于相对较小的树,在创建页面时,可以将整个树结构发送到客户端浏览器,并在从存储的数据中单击节点时显示树节点。但是,对于较大的树,最好根据需要获取数据,即单击节点时。如果您有120000名员工,那么您可能希望使用后一种方法

您当前使用的查询是什么?@Barmar这是一篇很棒的文章。谢谢你的链接。我现在写的是邻接模型。我可以看到嵌套集可能会快得多。这是真的吗?如果是,那么如何从父(主管id)-子(员工id)到嵌套集?构建嵌套集确实超出了我在mysql中所做的工作。它目前是这样设置的。我可以很容易地找到直接下属,但如果我有副总裁,可能会有6个级别以下,我至少需要打印所有内容的选项。