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

时间:2013-07-22 19:22:08

标签: php mysql recursive-query

使用PHP& Mysql-

我有120,000名员工的名单。每个人都有一个监督员字段,其中包含主管员工编号。

我希望构建能够以格式化树形式显示员工的内容。鉴于如果您点击任何人,您可以选择下载所有员工(包括他们的信息)。

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

此外,我确信这已经完成了一百万次。是否有一个处理组织层次结构的好类?

1 个答案:

答案 0 :(得分:1)

执行此操作的标准方法是使用一个表来存储所有员工,其中包含employee_id的主键字段,以及supervisor_id的字段,即“自我加入” - 表示此字段中的值指向此员工主管的员工ID。就显示员工树而言 - 对于相对较小的树,可以在创建页面时将整个树结构发送到客户端的浏览器,并且可以在从存储的数据中点击节点时显示树节点。但是,对于较大的树,最好根据需要获取数据,即单击节点时。如果您有120,000名员工,那么您可能希望使用后面的方法。