用戶表id字段為unsign int最多可存42億的記錄
用戶ID用英文逗號分隔(,)
用戶關系表關系字段左查詢正反兩向,用varchar英文編碼 latin1 ,可存儲6.5萬多字符,按6萬算,留5000給其他字段,每個用戶id(int(11))加,共12個字符(如果id是從1開始,那么其實平均下來只有10/2+2=7個字符),那么就是60000/12=5000個,一共可以存儲5000個上級用戶數據,因為雙向,所以單字段存2500個,所以當一個用戶的上級關系超過2500以后就不能繼續存儲了,為了標示是否已經到了2500個,應該有個字段存儲當前用戶層級和上級數量,防止無限添加導致出錯,或者需要每次都先做統計。總結:最多有2500層下線(不是2500個,每層都可以有無限個下線),如果用戶id是從1開始實際可存儲 60000/7/2 = 4285 層
要知道id為10的人有哪些下線:
首先,它自己的上線正關系字段:1, 加上自己的id就是1,10,
它的每個下線都有一個上線正關系字段,比如id為500的用戶:1,10,200,
那么,要知道10的所有下線,只需要like '1,10,%'
要知道id為500的所有上線:因為它自己的上線反關系字段:200,10,1, 只需要直接取出就可以了
為了快速檢索一個用戶的1級或指定層級的所有下線,應當存儲一個用戶層級字段,這樣要找到一個第2層用戶的5層以內下線只需要:like '1,10,%' and level < 7
