一尘不染

哪个效率更高:多个MySQL表还是一个大表?

mysql

我在MySQL数据库中存储了各种用户详细信息。最初,它是在各种表中设置的,这意味着数据与UserId链接,并通过有时复杂的调用输出,以根据需要显示和操作数据。建立一个新系统,将所有这些表组合成一个大的相关内容表几乎是有意义的。

  • 这会是帮助还是阻碍?
  • 调用,更新或搜索/操作时的速度考虑?

这是我的一些表结构的示例:

  • 用户-用户ID,用户名,电子邮件,加密的密码,注册日期,IP
  • user_details-Cookie数据,姓名,地址,联系方式,从属关系,人口统计数据
  • user_activity-贡献,最近一次在线访问,最后一次查看
  • user_settings-配置文件显示设置
  • user_interests-广告可定位变量
  • user_levels-访问权限
  • user_stats-匹配数

编辑: 到目前为止,我已经对所有答案进行了投票,它们都有本质上可以回答我问题的元素。

大多数表具有1:1的关系,这是使它们归一化的主要原因。

如果表格跨越100多个列,而这些单元格的大部分可能仍为空时,会不会有问题?


阅读 396

收藏
2020-05-17

共1个答案

一尘不染

多个表以下列方式/案例提供帮助:

(a)如果不同的人要开发涉及不同表的应用程序,则将它们拆分是有意义的。

(b)如果您想为不同的人赋予不同的权限,以进行数据收集的不同部分,则拆分它们可能更为方便。(当然,您可以查看定义视图并对其进行适当授权)。

(c)为了将数据移动到不同的地方,尤其是在开发过程中,使用表来减小文件大小可能是有意义的。

(d)当您在单个实体的特定数据收集上开发应用程序时,较小的占地面积可能会给您带来舒适感。

(e)这是一种可能性:您认为作为单个值的数据将来可能会变成真正的多个值。例如,信用额度到目前为止是单个值字段。但是明天,您可能会决定将值更改为(日期从,日期到,信用值)。拆分表现在可能会派上用场。

我的投票将是针对多个表-数据已适当拆分。

祝好运。

2020-05-17