我可以选择创建具有相同结构但内容不同的三个表,或者创建一个包含所有数据的表和一个用于区分数据的附加列。每个表中都有大约10,000行,它将专门用于查找数据。关键的设计标准是查找速度,因此更快:三个表每行10K行或一个表有30K行,或者没有实质性区别?注意:将用作查询参数的所有列都将具有索引。
答案 0 :(得分:3)
在查找时间方面,任何现代RDBMS中10k或30k行之间应该没有实质性差异。在任何情况下都没有足够的差异来保证去标准化。索引限定符列是此类设计的常用方法。
如果您的更新模式影响了您可以放入"短"表(例如,今天在社交网络中的消息)具有用于快速插入/更新的少量(呃)索引,并且存在后台进程将稳定的更新传送到大的完全索引的表。案例是你在写作操作中真正赢得 将是一个戏剧性的,但有非常特殊和不幸的要求。 RDBMS引擎非常复杂,能够以非常有效的方式处理大多数简单场景。 30k或行听起来不像候选人。
如果仍有疑问,可以很容易地编写测试来检查您的特定数据库/系统设置。我想如果你在这里用真实数据发表您的发现,那么对于你的每个步骤来说,这将是一个有用的信息。
答案 1 :(得分:1)
除了速度问题,其他海报已经涵盖并且我同意,您还应该考虑您在数据库中复制的业务模型,因为这可能会影响您的解决方案的维护成本。
如果3''事物'可能变为4,并且您选择了单独的表路径,那么您将不得不添加另一个表。然而,如果您选择鉴别器路径,那么它就像想出一个新的鉴别器一样简单。
但是,如果您选择了鉴别器路径,然后新要求规定“事物”中的一个要存储更多数据,那么您将不得不在表中添加额外的列,这些列与其他“事物”无关
我不能说哪种方式正确,因为只有你了解自己的商业模式。