1

sql server 为每一行添加一个空位掩码来存储可空列的NULL值,但是为什么即使我的表没有可空列也存在这个位掩码?

4

1 回答 1

0

我相信这样做是为了让您可以将列设为可空或将可空列添加为仅限元数据的操作。SQL Server 甚至可以立即在最大的表上执行此操作,就像它可以(通常)通过简单的元数据更改来添加、重命名或删除列一样。

我会以不同的方式实现这一点。我会在页面标题中添加一个字段,用于存储该页面正在使用的当前物理模式版本。当表的逻辑模式更改时,会创建一个新的物理模式版本。所有新页面都使用新格式。对旧格式页面的所有修改都会首先转换为新格式。

但 SQL Server 不这样做。它保留允许即时模式更改的每行信息。(它还存储每行的列数,以便您可以轻松添加列。)

于 2013-08-01T16:35:46.007 回答