php 对 mysql 数据库遍历的问题?

一个关于代理分销系统的算法优化问题

比如,代理级别分:金、银、铜三级,我现在是金牌代理A,同时我发展了银牌代理B、C、D,银牌代理b发展了铜牌代理E、F,如图:
A的下级代理列表
╦═══════

╠═ b
║ ╠══ e
║ ╠══ f
╠═ c
╠═ d
我现在用程序作出上面这样一张例图方法是:(PHP+MYSQL)
先搜索所有上级代理为A的代理,
例如找到了B代理,再搜索所有上级代<爱尬聊_百科>理为B的代理,本次搜索完毕。
再搜索C代理 …………
以此类推。

问题:

现在代理数据库中有三十万条记录,每个代理都可以在代理分销系统中查看自己的下级代理树,按照以上方法:
每次搜索都要很久,如果某个代理的下级代理有1000个,那就根本显示不出来。


我想到的解决办法是用一个数组存储所有用户关系,然后将这个数组存储为文件,对每次添加删除用户都对这个数组同时进行更新操作,然后把想要的数据从数组遍历出来,然后直接到数据库中执行一个select就可以了。。这种办法可行么,还有什么其他解决方案么


遍历

想从上层会员找其下的底层会员,会用到遍历,目测是三叉树的层次遍历,这个算法,目测会对数据库进行好多好多次的查询。。。太耗费资源了,有没有什么替代方案?缓存?redis?


Almaktoum 8小时前

先检查代理级别建索引了没。


川下富江 8小时前

谢邀,说说我的几个思路吧:


南楼清主 8小时前

多次加载,这个楼上也说了,先加载N级的,等点击后,再ajax去请求N+1级的。


白天一_689 8小时前

整个树显示出来一个页面也不合适吧,可以做成按需查询。金牌代理打开页面显示下级的所有银牌代理,点击银牌代理用户再查看他下级的铜牌代理


筱果果背叛残局18185350 7小时前

建议分级查询,按需查询数据,一次性显示一个关系树查询次数多,耗资源;这样的实现可以看无限级分类,使用左右值原理,先序遍历树形结构,与商场的分类同原理


360U3208140907 7小时前

如果更新不是很频繁的话,使用缓存(数据量30万,估计只能缓存1~2级了),不用每次用SQL查询。


编辑 举报 2023-04-09 13:48

0个评论

暂无评论...
验证码 换一张
相关内容