非规范化会变得低效吗?

时间:2013-03-27 16:05:45

标签: database denormalization query-performance

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

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

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

1 个答案:

答案 0 :(得分:1)

是的,它可以。您不会说出您正在使用的数据库或额外列的数据类型,但添加更多列会增加宽度'你的表的意思是需要更多的逻辑读取来检索相同数量的记录,更多的读取等于更慢的速度。因此,通过添加太多列可能最终会丢失通过非规范化获得的内容,但这取决于您的数据库设计。

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