如何使用mysql保存层级关系,例如多级代理

现在设计一个用于营销系统的代理层级关系,一级代理开设二级代理,二级代理开设三级代理一直到10代,各级代理发展会员下单。需求是快速查出指定层级代理下所有会员(不管是不是直属会员)下单总额。递归相当的浪费性能啊!有不递归的方法吗?

阅读 6.3k
4 个回答

其实很简单的问题,看系统设计了。如果代理是无限级的,并且真的可能会超过100+,那还是做缓存吧。如果不是只有几级而已。
那就做冗余吧。

冗余:

用户ID 代理记录 other
1 NULL NULL
2 ,1, NULL
3 ,1,2, NULL

可以很简单的获取我的下级都有谁我的上级的代理链

--
mysql5.7 以后可以直接用数组或json处理数据

代理id,上级id,所属层级

表字段:一级ID,二级ID.....十级ID,下单金额
每次插数据的时候,把当前会员的所有上级ID都插进去,之后你想查几级ID就取对应的列进行求和。
比如你要查某个五级ID下总金额,那么就是:select sum(下单金额) from table where 五级ID='AAAAA' AND 六级ID IS NOT NULL

目前采用的方式,是使用一个字段保存各级代理账号拼接起来的字符串,例如/1dai/2dai/3dai/.../10dai/,不知道有没有更好的方案?

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题