八、IO优化(3)稀疏列

本文介绍了数据库设计中Nullable的应用及稀疏列的优化存储方式。稀疏列减少了Null值的空间需求,创建更有效的筛选索引。适用于大量NULL值的情况。

一、Nullable

  在设计表时,有时会允许某列可以使用Null值(默认)。

110227268.png


CREATE TABLE [dbo].[EmpTable2](

[EmpID] [varchar](10) NOT NULL,

[DepID] [nvarchar](10) NULL,

[Title] [nvarchar](10) NULL

)



二、稀疏列

  稀疏列是对 Null 值采用优化的存储方式的普通列。

  稀疏列减少了 Null 值的空间需求,但代价是检索非 Null 值的开销增加。 当至少能够节省 20% 到 40% 的空间时,才应考虑使用稀疏列。



三、稀疏列的使用场景

1. 列集

  使用稀疏列的表可以指定一个列集以返回表中的所有稀疏列。列集是一种非类型化的 XML 表示形式,它将表的所有稀疏列组合成为一种结构化的输出。列集与计算列的相似之处在于,列集并不是物理地存储在表中。列集与计算列的不同之处在于,列集可直接更新。

  稀疏列和列集是通过使用 CREATE TABLE 或 ALTER TABLE 语句定义的。INSERT、UPDATE 和 DELETE 语句可以通过名称来引用稀疏列。详见 http://technet.microsoft.com/zh-cn/library/cc280604(v=sql.105).aspx


2. 筛选索引

  对于仅包含少量非 NULL 值的稀疏列,因为稀疏列有许多 Null 值行,所以尤其适用于筛选索引。稀疏列的筛选索引可以仅仅对已填充值的行编制索引。这会创建一个更小、更有效的索引。



本文结语:

  使用稀疏列,可以减小存储空间,或者创建更有效的筛选索引。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值