SQL Server 2008稀疏列确定列的转化
2008-12-12 10:14:34 来源:WEB开发网由于在SQL Server 2008中引入了新的稀疏列功能,现在就有可能把列声明为稀疏列并且任何时候在列中输入一个空值它都不会消耗任何空间。其中一个技巧是找出何时确定是否把一个列定义稀疏列。
在下面的例子中,Address Lines 1 到 3是要求的,Address Lines 4和5是不要求的但是经常使用的,Address Lines 6到8很少使用。当创建Address Lines 6到8时,我们使用稀疏选项,这是因为我们知道这个数据很少存储下来。
CREATE TABLE CustomerInfo
(CustomerID INT PRIMARY KEY,
Address_Line1 VARCHAR(100) NOT NULL,
Address_Line2 VARCHAR(100) NOT NULL,
Address_Line3 VARCHAR(100) NOT NULL,
Address_Line4 VARCHAR(100) NULL,
Address_Line5 VARCHAR(100) NULL,
Address_Line6 VARCHAR(100) SPARSE NULL,
Address_Line7 VARCHAR(100) SPARSE NULL,
Address_Line8 VARCHAR(100) SPARSE NULL,
)
那么为什么不干脆把所有的列都声明为稀疏列呢?
稀疏列需要额外的4个字节来在表中存储非空值固定长度数据类型值并且要求零字节来存储一个空值;因此,在每一个数据类型上拥有正确的阈值是很重要的,或者你可以使用更多的空间而不是获得它来结束。一个数据类型使用的字节越少,用来节约空间的空值百分比要求就越高。
在MSDN的一张表中有使用稀疏列的建议百分比。看看这个可以帮助你确定何时可以获得使用稀疏列的益处。
使用这张表作为准则,下面的脚本将会确认任何可能获得新的稀疏列功能的列。通过搜索数据库中超过一定阈值的空值的列,你可以很容易地分析结果并且确定这个新功能是否可用。固定长度列的阈值存储在一个临时表中。依赖于精确度和长度的数据类型将默认为60%。
- ››SQL Server 2008 R2 下如何清理数据库日志文件
- ››sqlite 存取中文的解决方法
- ››SQL2005、2008、2000 清空删除日志
- ››SQL Server 2005和SQL Server 2000数据的相互导入...
- ››sql server 2008 在安装了活动目录以后无法启动服...
- ››sqlserver 每30分自动生成一次
- ››sqlite 数据库 对 BOOL型 数据的插入处理正确用法...
- ››sql server自动生成批量执行SQL脚本的批处理
- ››sql server 2008亿万数据性能优化
- ››SQL Server 2008清空数据库日志方法
- ››sqlserver安装和简单的使用
- ››SQL Sever 2008 R2 数据库管理
更多精彩
赞助商链接