比如,代理级别分:金、银、铜三级,我现在是金牌代理A,同时我发展了银牌代理B、C、D,银牌代理b发展了铜牌代理E、F,如图:
A的下级代理列表
╦═══════
║
╠═ b
║ ╠══ e
║ ╠══ f
╠═ c
╠═ d
我现在用程序作出上面这样一张例图方法是:(PHP+MYSQL)
先搜索所有上级代理为A的代理,
例如找到了B代理,再搜索所有上级代<爱尬聊_百科>理为B的代理,本次搜索完毕。
再搜索C代理 …………
以此类推。
现在代理数据库中有三十万条记录,每个代理都可以在代理分销系统中查看自己的下级代理树,按照以上方法:
每次搜索都要很久,如果某个代理的下级代理有1000个,那就根本显示不出来。
我想到的解决办法是用一个数组存储所有用户关系,然后将这个数组存储为文件,对每次添加删除用户都对这个数组同时进行更新操作,然后把想要的数据从数组遍历出来,然后直接到数据库中执行一个select就可以了。。这种办法可行么,还有什么其他解决方案么
想从上层会员找其下的底层会员,会用到遍历,目测是三叉树的层次遍历,这个算法,目测会对数据库进行好多好多次的查询。。。太耗费资源了,有没有什么替代方案?缓存?redis?
先检查代理级别建索引了没。
谢邀,说说我的几个思路吧:
多次加载,这个楼上也说了,先加载N级
的,等点击后,再ajax去请求N+1级
的。
整个树显示出来一个页面也不合适吧,可以做成按需查询。金牌代理打开页面显示下级的所有银牌代理,点击银牌代理用户再查看他下级的铜牌代理
建议分级查询,按需查询数据,一次性显示一个关系树查询次数多,耗资源;这样的实现可以看无限级分类,使用左右值原理,先序遍历树形结构,与商场的分类同原理
如果更新不是很频繁的话,使用缓存
(数据量30万,估计只能缓存1~2级了),不用每次用SQL查询。
精彩推荐
RECOMMEND
热门评论
TOP COMMENTS