• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

我们讨论一下 每个QQ有很多不同好友,数据库如何设计会更方便?

php 搞代码 4年前 (2022-01-23) 20次浏览 已收录 0个评论
文章目录[隐藏]

我们讨论一下 每个QQ有很多不同好友,数据库如何设计会更方便?

应该超出我的能力了,想看看大家有什么 idea…

回复讨论(解决方案)

一个两字段的表
一万个QQ全部互为好友,则记录数也就一亿
而事实上连十分之一都不会到

id myid friendid

搞定。

这是最好的设置办法,对服务器要求最低。

两个表 用个qq表 一个关系表

1.QQ??表
每?用?一???
id,nickanme, 等。

2.QQ好友??表
id, myid, friendid

3.QQ黑名?表
id myid blackid

4.信息表,??建?使用分表
按用?id?分表,每2000?用?一?信息表,例如 id=5000的用? 分表??是 5000/2000 再取整,即2,所@本文9来源gao($daima.com搞@代@#码8网^搞代gaodaima码以表??是message_0002
id fromid, toid,message, addtime.

一个表。
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万个号一个库,若干库一个服务器)

一个两字段的表
一万个QQ全部互为好友,则记录数也就一亿
而事实上连十分之一都不会到

原来老大都这么做,看来是我想太多了。。


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:我们讨论一下 每个QQ有很多不同好友,数据库如何设计会更方便?

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址