【发布时间】:2012-11-30 05:33:20
【问题描述】:
问题是添加更多列或拆分数据库表。
假设我有一张桌子:
UserId - Primary Key
Col1
Col2
Col3
现在我将另一个数据保留为 Col4 Col5, 但此数据并非对每个 UserId 都有效。
假设我的主表中有 200 万条记录,而这些附加数据仅对 25000 条记录有效。所以问题是:我应该将另一个表组成为
UserId - Primary Key
Col4
Col5
或
使用我的主表作为
UserId - Primary Key
Col1
Col2
Col3
Col4
Col5
我应该走哪条路?我关心性能。这些额外的列是 tinyint 并且默认为 0 而不是 null。
SQL 服务器 2008 R2
【问题讨论】:
-
真的要看使用场景!非规范化狂热者会告诉你一件事,但对于维护、代码重用、性能或可用性,你可能需要其他东西。您是否有一个映射到 Col1-5 的标准业务对象,需要您返回所有列?你有很多插入、更新、读取
-
col 4 和 col 5 读取更新非常罕见。虽然 col 1 2 3 读取太多。
标签: sql-server performance database-design split