id  myid  friendid搞定。这是最好的设置办法,对服务器要求最低。

解决方案 »

  1.   

    1.QQ會員表
    每個用戶一條記錄
    id,nickanme, 等。2.QQ好友關係表
    id, myid, friendid3.QQ黑名單表
    id myid blackid4.信息表,這裡建議使用分表
    按用戶id來分表,每2000個用戶一個信息表,例如 id=5000的用戶 分表應該是 5000/2000 再取整,即2,所以表應該是message_0002
    id fromid, toid,message, addtime.
      

  2.   

    一个表。
    CREATE TABLE `qq_friends` (
      `my_id` bigint(13) NOT NULL,
      `friend_id` bigint(13) NOT NULL,
      `is_black_id` tinyint(1) NOT NULL DEFAULT '0',
      `add_date` TIMESTAMP(10) NOT NULL,
      PRIMARY KEY (`my_id`,`friend_id`),
      KEY `my_id` (`my_id`),
      KEY `add_date` (`add_date`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;建议用InnoDB,行锁而不是表锁
    放弃自增ID(你用它干什么?排列大小?)
    PRIMARY KEY 设置本Q ID和朋友ID的组合
    本Q ID和加入时间分别加上索引
    is_black_id(是否黑名单,0,1来储存)
    如1楼所说,由于是交叉记录,一万个QQ全部互为好友,则记录数也就一亿(实际肯定小于),但是数据库也会很惊人。所以要考虑分库或者数据库集群(每100万个号一个库,若干库一个服务器)