有一张[id pid]类型的数据表,如下:
--- id --- pid ---
--- A --- B ---
--- A --- C ---
--- B --- D ---
--- B --- E ---
--- C --- F ---
--- C --- G ---
对应的结构:
- D
- E
- B
A
- C
- F
- G
如何统计A,B,C,D,E,F,G的下级团队数(包括自己)。
比如
id 团队数
A 7
B 3
C 3
D 1
E 1
F 1
G 1
目前我是取出所有的数据,通过递归去获取这样的数据,如果存在下级就递归统计团队数。
遇到的问题:
当数据量达到2W时候,取出所有数据,导致内存占满
请问各位有什么好的处理方式?
逐级计数,不需要一次取出整棵树;
另外可以每个节点记录路径;统计时只需 count(*)like '%A%' 例如求A 的子孙数