SQL Server 2008中的稀疏列和列集
程序员文章站
2022-05-19 22:01:54
...
这是两个新增的特性。 关于稀疏列的详细介绍,请参考 关于列集的详细介绍,请参考 我的总结如下 1. 稀疏列主要是为了提供对可空字段的更好一个存储机制,它可以节省空间(具体说它在真正空值的时候就不占空间),但也会带来一些性能方面的影响。所以要有所权
这是两个新增的特性。
关于稀疏列的详细介绍,请参考
关于列集的详细介绍,香港服务器,请参考
我的总结如下
1. 稀疏列主要是为了提供对可空字段的更好一个存储机制,它可以节省空间(具体说它在真正空值的时候就不占空间),但也会带来一些性能方面的影响。所以要有所权衡。
稀疏列主要使用场景:一个实体有很多属性列,但很多属性都可能填不满。这在以前我们称为属性集问题。
稀疏列不是一个数据类型,它是一个列的属性而已。
2. 列集是可以定义所有稀疏列的集合。这是一个XML数据类型。如果为多个稀疏列定义了一个列集,那么针对这些列的修改,就既可以直接修改这些列,也可以通过一次性通过修改列集字段来完成。列集字段其实是一个计算字段。
下面来看一个例子
首先,看看如何使用稀疏列。这里的关键在于定义的时候使用SPARSE关键字
USE AdventureWorks GO CREATE TABLE DocumentStore (DocID int PRIMARY KEY, Title varchar(200) NOT NULL, ProductionSpecification varchar(20) SPARSE NULL, ProductionLocation smallint SPARSE NULL, MarketingSurveyGroup varchar(20) SPARSE NULL ) ; GO --插入数据是一模一样的 INSERT DocumentStore(DocID, Title, ProductionSpecification, ProductionLocation) VALUES (1, 'Tire Spec 1', 'AXZZ217', 27) GO INSERT DocumentStore(DocID, Title, MarketingSurveyGroup) VALUES (2, 'Survey 2142', 'Men 25 - 35') GO 然后,我们看看如何把列集与稀疏列进行结合使用 USE AdventureWorks; GO CREATE TABLE DocumentStoreWithColumnSet (DocID int PRIMARY KEY, Title varchar(200) NOT NULL, ProductionSpecification varchar(20) SPARSE NULL, ProductionLocation smallint SPARSE NULL, MarketingSurveyGroup varchar(20) SPARSE NULL, MarketingProgramID int SPARSE NULL, SpecialPurposeColumns XML COLUMN_SET FOR ALL_SPARSE_COLUMNS);--目前这里只是支持ALL_SPARSE_COLUMNS这个关键字,也就是说所有的稀疏列 GO --使用列集之后,服务器空间,既可以直接使用列集插入数据,也可以使用稀疏列本身插入数据 INSERT DocumentStoreWithColumnSet (DocID, Title, ProductionSpecification, ProductionLocation) VALUES (1, 'Tire Spec 1', 'AXZZ217', 27) GO INSERT DocumentStoreWithColumnSet (DocID, Title, MarketingSurveyGroup) VALUES (2, 'Survey 2142', 'Men 25 - 35') GOINSERT DocumentStoreWithColumnSet (DocID, Title, SpecialPurposeColumns) VALUES (3, 'Tire Spec 2', '
至于更新,和插入一样,两种方式都是可以的,且效果一样
,香港服务器上一篇: PHP基于cookie与session统计网站访问量并输出显示的方法,cookiesession_PHP教程
下一篇: ExtJS 4.0 改善Ext.grid.plugin.RowEditing (重构,v1.4版本,2011-09-11)
推荐阅读
-
SQL Server 数据库调整表中列的顺序操作方法及遇到问题
-
SQL server 和 Oracle 中列转行的小操作
-
SQL SERVER使用REPLACE将某一列字段中的某个值替换为其他的值
-
SQL Server查找表名或列名中包含空格的表和列实例代码
-
SQL Server将自己的查询结果作为待查询数据子列之二
-
SQL Server如何查找表名或列名中包含空格的表和列
-
SQL Server 列存储索引性能总结(3)——列存储的锁
-
SQL Server 列存储索引性能总结(10)——行组的大小影响
-
有趣的SQL(三)行转列,列转行和复制
-
Sql查询MySql数据库中的表名和描述表中字段(列)信息