一个巨大的表格还是多个小表格?

3
我有一个数据库,将修改记录日志存入表中。这个修改表包含指向其他表的外键(修改表只包含对对象所做的引用)。 此修改表中的对象可以分为不同的组。当用户访问服务时,他只会请求属于自己组的对象。 每周我将新增约2到10个组。
  • 这个表非常经常被智能手机请求,并且将包含大约500,000 / 1,000,000条记录。
  • 如果我将修改表拆分成多个表,那么就没有需要进行表连接以回答用户请求的表了。

如果我将这个单一的表改变成多个表,我猜它会加速响应时间。

但另一方面,每个修改表的“插入”都需要先知道目标表的名称(这意味着另一个请求)。为此,我计划在“组”表中添加一个varchar列,表示修改的目标表。

我的问题是一个设计模式/架构问题——我应该选择一个非常庞大的表,每个请求需要3个“where”,还是尝试使用许多轻量级表,而不需要“where”来操作?

2个回答

1

最干净的做法是使用一个表格并在人口上分区它。 分区就是为此而生的。


0

500K - 1M条记录并不是微不足道的,但它也不算非常庞大。你使用的数据库平台是什么?大多数主流专业平台(如SQL、Oracle、MySQL等)都能够处理这个问题。

如果要查询的表比较窄(具有少量列),那么出现问题的可能性就会比“宽表”(具有许多列)小。

有很多联接可能会成为一个问题(我只是不能从经验上进行言论)。根据你如何管理事物(以及你的应用程序代码有多么好),你真的需要外键约束吗?


2
外键绝不是可选的。 - user330315
实际上,这个表只是一种将其他表中的所有更改列在单个表中的方式。外键允许指向表中正确的记录。 - kheraud
@a_horse_with_no_name - 就事务性系统而言,我99%同意您的观点;总有一些例外情况。那么报告方案呢?去规范化的表等等呢? - Adrian K

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接