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 优艾设计网_PS百科 4小时前
先检查代理级别建索引了没。
川下富江 4小时前
谢邀,说说我优艾设计网_PS问答的几个思路吧:
南楼清主 优艾设计网_PS交流 4小时前
多次加载,这个楼上也说了,先加载N级
的,等点击后,再ajax去请求N+1级
的。
白天一_689 优艾设计网_Photoshop交流 4小时前
整个树显示出来一个页面也不合适吧,可以做成按需查询。金牌代理打开页面显示下级的所有银牌代理,点击银牌代理用户再查看他下级的铜牌代理
筱果果背叛残局18185350 4小时前
建议分级查询优艾设计网_PS百科,按需查询数据,一次性显示一个关系树查询次数多,耗资源;这样的实现可以看无限级分类,使用左右值原理,先序遍历树形结构,与商场的分类同原理
360U3208140907 4小时前 优艾设计网_设计模板
如果更新不是很频繁的话,使用缓存
(数据量30万,估计只能缓存1~2级了),不用每次用SQL查询。
精彩评论