我们讨论一下 每个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,所以表??是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全部互为好友,则记录数也就一亿

而事实上连十分之一都不会到

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

本文原创发布php中文网,转载请注明出处,感谢您的尊重!

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

  1. 熟悉mysql数据库设计和性能优化_MySQL性能优化学习笔记-(1)数据库设计

    一.数据库设计 1.数据类型优缺点分析 数据类型的选择要遵循的总体原则 更小的通常更好 一般情况下,应该尽量选择使用可以正确存储数据的最小数据类型.更小的数据类型通常更快,因为它们站用更小的磁盘.内存 ...

  2. 基于javaweb仿京东商城管理系统的设计与实现(含论文和程序源码及数据库文件)

    网上购物商城系统以弥补传统购物方式的弊端.在目前的商城里,如果采用网上商城方式,用户购物时就不需要到店里面排队,这样不仅能实时地了解商品的特色,而且方便了顾客,同时也减轻了商城的服务压力.随着WLAN ...

  3. 【领域驱动设计】(4):从 DDD 落实到数据库设计的整个过程

    云世  公众号 过去,系统的软件设计是以数据库设计为核心,当需求确定下来以后,团队首先开始进行数据库设计.因为数据库是各个模块唯一的接口,当整个团队将数据库设计确定下来以后,就可以按照模块各自独立地进 ...

  4. 基于springboot+bootstrap+thymeleaf的物联网一站式宠物管理平台(领养、救助、商城)设计 毕业论文+用户手册+源码清单+项目源码及数据库文件

    下载:https://download.csdn.net/download/m0_66682818/77957797 项目介绍: 基于springboot+bootstrap+thymeleaf的物联 ...

  5. JAVA毕业设计Web美食网站设计计算机源码+lw文档+系统+调试部署+数据库

    JAVA毕业设计Web美食网站设计计算机源码+lw文档+系统+调试部署+数据库 JAVA毕业设计Web美食网站设计计算机源码+lw文档+系统+调试部署+数据库 本源码技术栈: 项目架构:B/S架构 开 ...

  6. discuz克米设计app模板V3.5破解版,查找好友修复文件

    discuz克米设计app模板V3.5破解版,查找好友修复文件 下载地址: http://www.dungei.com/1926.html

  7. java计算机毕业设计高校共享机房管理系统的设计与实现源码+系统+lw文档+mysql数据库+部署

    java计算机毕业设计高校共享机房管理系统的设计与实现源码+系统+lw文档+mysql数据库+部署 java计算机毕业设计高校共享机房管理系统的设计与实现源码+系统+lw文档+mysql数据库+部署 ...

  8. 基于java旅游网站设计计算机毕业设计源码+系统+lw文档+mysql数据库+调试部署

    基于java旅游网站设计计算机毕业设计源码+系统+lw文档+mysql数据库+调试部署 基于java旅游网站设计计算机毕业设计源码+系统+lw文档+mysql数据库+调试部署 本源码技术栈: 项目架构 ...

  9. java计算机毕业设计企业员工考勤系统的设计与实现源码+程序+lw文档+mysql数据库

    java计算机毕业设计企业员工考勤系统的设计与实现源码+程序+lw文档+mysql数据库 java计算机毕业设计企业员工考勤系统的设计与实现源码+程序+lw文档+mysql数据库 本源码技术栈: 项目 ...

最新文章

  1. 库克退休前的最后一战:不是苹果汽车而是……
  2. 学界 | OpenAI 发布稀疏计算内核,更宽更深的网络,一样的计算开销
  3. 《MyBatis技术原理与实战》之动态SQL
  4. tensorflow加载训练好的模型实例
  5. 湖北大学 计算机考研,湖北大学考研难吗?一般要什么水平才可以进入?
  6. leetcode 1449. 数位成本和为目标值的最大数字(dp)
  7. cmake find_package路径详解
  8. 企业是否应该实现对客户需求的快速响应_为什么说数据中台是企业数字化转型的基石?...
  9. linux批量替换文件名中的相同字符
  10. 计算机专业自我总结1000字,计算机专业自我鉴定范文1000字
  11. android数据存放map_Android存储数据到本地文件
  12. Python中变量判断
  13. Linux修改时区和时间
  14. Spring自动注入的几种方式
  15. IE疑难杂症之已取消网页导航--该站点安全证书的吊销信息不可用
  16. Python计算身体质量指数BMI
  17. 微信开发_网页授权获取用户的基本信息
  18. UE4之打开虚拟键盘
  19. MFC中单文档程序框架
  20. 解决hive 中 beeline无法连接问题

热门文章

  1. HTTP——GET和POST请求
  2. 学习记录(一)(每日修改)
  3. 抖音应该如何获取收入?
  4. 笔记本电脑计算机里面怎么管理,Win7笔记本电脑如何分盘?
  5. LED数字显示消费机设置说明
  6. vue项目中,el-input type=“number“可以输入字母e . -的问题解决
  7. ESP32设备驱动-LED控制器生成PWM信号
  8. 我是一个流氓软件线程
  9. Jetpack学习之——使用动画缩放图片
  10. android videoview 隐藏 播放按钮