SQL Server:表中的许多列与两个表中的较少列相对应

Cat*_*lin 1 sql-server database-design sql-server-2008 database-normalization

我有一个数据库表(称为Fields),它有大约35列.其中11个总是包含大约每300.000行的相同常量值 - 并充当元数据.

这个结构的缺点是,当我需要更新这11列值时,我需要去更新所有300.000行.

我可以将所有常用数据移动到不同的表中,并在一个地方只更新一次,而不是300.000个地方.

但是,如果我这样做,当我显示字段时,我需要INNER JOIN's在两个表之间创建,我知道这使得SELECT语句更慢.

我必须说,更新列比读取(显示)数据更少发生.

您如何建议我应该将数据存储在数据库中以获得最佳性能?

小智 6

我可以将所有常用数据移动到不同的表中,并在一个地方只更新一次,而不是300.000个地方.

即理智的数据库设计和标准化.

这不是关于"许多空的领域",它是残酷的大量冗余数据.你应该孤立的常数.单独的表.这也可以使事情变得更快 - 它允许数据库更有效地使用内存,因为您的数据库要小得多.