本帖最后由 yananguo_1985 于 2011-03-14 14:26:35 编辑

解决方案 »

  1.   

    标准的范式设计方法是
    (UserId,FriendId,CreatedDateTime,....)
    'A','B',...
    (UserId,FriendId,GroupId)
    'A','B',2
    'A','B',5
    'A','B',6
    'A','B',7
    'A','B',9
    但考虑到一个人添加的好友是有限的,不会几百万,我个人估计平均一个人也就50-200好友,并且分组上所做的查询并不多。因此可以设计为
    (UserId,FriendId,CreatedDateTime,....GroupId)
    'A','B',.......,'2,5,6,7,9'至于分组的显示和查询则可以在程序中实现。
      

  2.   

    1、最好将GroupId存为
    2
    5
    6
    7
    92、拆分字符串,用SQL+辅助表方法
    示例:
    SELECT a.*,
    MID(MID(newa,b.id,LENGTH(newa)),2,LOCATE(',',MID(newa,b.id,LENGTH(newa)),2)-2) AS newb
    FROM (
    SELECT *,CONCAT(',',articles,',') AS newa FROM `test`.tn) a,lsb2 b
    WHERE LENGTH(newa)>=b.id
    AND MID(newa,b.id,1)=','
    AND LENGTH(MID(newa,b.id,LENGTH(newa)))>=2lsb2:字段ID,内容1-10000,效率不会太高