搜索mlm软件的家谱(成就者)

我正在为mlm创建基于网络的软件来搜索achivers(直接和间接两者)例如:supose我的id是47而我的直接成就者是98,56,78,62我希望找到间接成就者,这将成为我的直接成就者成就。 我为它编写了代码:

function countachiverfetchCategoryTreeList($parent = '', $user_tree_array = '') { if (!is_array($user_tree_array)) $user_tree_array = array(); $sql = "SELECT `id`FROM `users` WHERE `status` = 1 AND `sponser_id` = $parent ORDER BY id ASC "; $query = $this->db->query($sql); if ($query->num_rows() > 0) { foreach ($query->result() as $key) { /* $sef_intro = $this->getselfintroducer($key->id);*/ $user_tree_array[] = json_encode(array('id'=>$key->id)); $user_tree_array = $this->countachiverfetchCategoryTreeList($key->id, json_decode($user_tree_array)); } } return $user_tree_array; } 

数据库结构:


id | 手机| s_pid | direct_achiever | indirect_achiever

1 xxx 0“2”

2 xxx 1“4”

3 xxx 0 NULL

4 xxx 2 NULL

47 xxx 0“98,56,78,62”


但如果间接成功者超过3000,并且显示错误服务器超时,则需要花费最长时间执行。 谁能帮我?? 我想找到特定ID的所有嵌套成就者