稀疏列与间接

时间:2012-01-06 21:43:23

标签: mysql

据我所知,MySQL没有任何特殊的SPARSE COLUMN指令,任何像这样的问题都是纯粹的情境,所以我想知道何时使用稀疏列有一个很好的经验法则与什么时候创建另一个表。

作为一个具体的例子,我有一个名为Lessons的表。我们想要添加一个lesProgramNumber,但这只适用于任何给定时间内所有课程的大约10%(对于其他90%,它将为NULL)。我们可以通过非常轻松地使用NULL表来避免大量LessonsProgramNumber数据,但这有时需要额外的JOIN。有没有一种简单的方法可以选择我需要的东西?如果Lessons只有500行怎么办?如果它有5亿呢?

1 个答案:

答案 0 :(得分:5)

当列为NULL时,InnoDB的COMPACT行格式(默认值)不存储任何内容;它只存储非空列。它只是跳过磁盘行存储中的该列。所以稀疏列的成本并不是那么糟糕。

请参阅http://dev.mysql.com/doc/refman/5.1/en/innodb-physical-record.html