我有一个很大的mysql表--基本上是稍微修改了一下的LDAP转储。12万名员工。
很多事情都需要这个表,但是我有一个任务是处理服务器--递归查询。每个员工都有empl。其所在行的id和主管id。轻松的父子关系。然而,我们拥有的一个应用程序是一个群发电子邮件应用程序。我们使用LDAP表来搜索给定经理下的所有员工。嗯,这可能会深入6-10层,并包括10-20K行。它是强烈的。我目前的系统不能处理大型查询。
那么如何将父子关系自动化到一个嵌套的集合中呢?这真的超出了我在mysql中所做的事情,所以任何帮助都是非常感谢的。
另外,这个问题怎么还没有被问过100次呢?
发布于 2013-07-24 04:35:13
你可能想看看这篇文章:
http://mikehillyer.com/articles/managing-hierarchical-data-in-mysql/
发布于 2013-07-24 06:45:56
我构建了一个存储过程来完成这项工作。这从主管id开始,并查找所有子项及其子项。当心循环关系!
假设: Employee表具有PID (person)和SupID (supervisor)
Emailtable有PID,PersonName,Email,Nodelevel (int),从空开始。
调用Nodeup(1,SupervisorID) ( curnode int,IN supid int中的参数)
BEGIN
#Routine body goes here...
declare newnode int;
if curnode = 1 then
insert emailtable (pid,personname,email,nodelevel) select pid,personname,email,1 from employees where pid = superid;
end if;
insert emailtable(personname,pid,email,nodelevel) select personname,pid,email,curnode+1
from employees where supid in (select pid from emailtable where curnode = emailtable.nodelevel);
set newnode = (select max(nodelevel) from emailtable);
if newnode > curnode then
call nodeup(Newnode,0);
end if;
END
https://stackoverflow.com/questions/17820460
复制相似问题