0

我们有一个非规范化的表,因为对于我们用户的数据量来说,连接速度太慢的风险很大。所以我们创建了 10 列信息(INFO0、INFO1...INFO9)。大多数时候,只使用 2-3 第一列,其他为空。

但现在,我们需要再添加两种类型的信息,每列 10 列(总共 20 列)。棘手的部分是,我们的设计将使用户无法使用所有 30 个非规范化列。在任何时候,他们总是能够在每行上使用最多 10 个。此外,我们可能需要添加更多新的非规范化列,但我们永远无法在每行上使用超过 10 个。

我知道这不是一个好的设计,但我们真的别无选择。所以我的问题是:这种设计会变得低效吗?有很多具有空值的列会减慢我的查询速度吗?如果是的话,它会成为一件大事吗?

4

1 回答 1

1

是的,它可以。你没有说你正在使用什么数据库或者额外的列是什么数据类型,但是添加更多的列会增加你的表的“宽度”,这意味着需要更多的逻辑读取来检索相同数量的记录,更多的读取等于更慢的速度。因此,通过非规范化获得的结果可能最终会因添加太多列而丢失,但这程度取决于您的数据库设计。

如果它确实影响性能,则中间解决方案可能是垂直拆分表,将不经常引用的列放置在第二个表中。

于 2013-03-27T17:30:36.463 回答