SQL Server 2008中的稀疏列和列集
来源:互联网 发布:淘宝服装店货源 编辑:程序博客网 时间:2024/06/05 02:47
这是两个新增的特性。
关于稀疏列的详细介绍,请参考 http://msdn.microsoft.com/zh-cn/library/cc280604.aspx
关于列集的详细介绍,请参考 http://msdn.microsoft.com/zh-cn/library/cc280521.aspx
我的总结如下
1. 稀疏列主要是为了提供对可空字段的更好一个存储机制,它可以节省空间(具体说它在真正空值的时候就不占空间),但也会带来一些性能方面的影响。所以要有所权衡。
稀疏列主要使用场景:一个实体有很多属性列,但很多属性都可能填不满。这在以前我们称为属性集问题。
稀疏列不是一个数据类型,它是一个列的属性而已。
2. 列集是可以定义所有稀疏列的集合。这是一个XML数据类型。如果为多个稀疏列定义了一个列集,那么针对这些列的修改,就既可以直接修改这些列,也可以通过一次性通过修改列集字段来完成。列集字段其实是一个计算字段。
下面来看一个例子
首先,看看如何使用稀疏列。这里的关键在于定义的时候使用SPARSE关键字
USE AdventureWorksGOCREATE 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)GOINSERT DocumentStore(DocID, Title, MarketingSurveyGroup)VALUES (2, 'Survey 2142', 'Men 25 - 35')GO
然后,我们看看如何把列集与稀疏列进行结合使用
USE AdventureWorks;GOCREATE 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)GOINSERT DocumentStoreWithColumnSet (DocID, Title, MarketingSurveyGroup)VALUES (2, 'Survey 2142', 'Men 25 - 35')GO
INSERT DocumentStoreWithColumnSet (DocID, Title, SpecialPurposeColumns)VALUES (3, 'Tire Spec 2', 'AXW9R41138')GO
有意思的是,此时如果再以SELECT *的语法查询该表的话,那些稀疏列默认是不会被返回的,而只是返回列集
当然啦,如果还是想返回稀疏列本身的内容,我们可以通过下面的语法
SELECT DocID, Title, ProductionSpecification, ProductionLocation FROM DocumentStoreWithColumnSetWHERE ProductionSpecification IS NOT NULL ;
至于更新,和插入一样,两种方式都是可以的,且效果一样
作者:陈希章出处:http://blog.csdn.net/chen_xizhang
本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
- SQL Server 2008中的稀疏列和列集
- SQL Server 2008中的稀疏列和列集
- SQL Server 2008 引入了“稀疏列”
- SQL Server中的标识列
- 漫谈SQL Server中的标识列(一)
- 漫谈SQL Server中的标识列(二)
- 漫谈SQL Server中的标识列
- 漫谈SQL Server中的标识列
- 漫谈SQL Server中的标识列
- 关于SQL Server数据库中的标识列
- sql server 和 oracle查询列名以及列数
- SQL Server 查看列,添加列,修改列,删除列
- SQL Server -identity列
- sql server 计算列
- sql server 列转行
- SQL Server 标识列
- sql server 列转行
- SQL Server 列转行
- 关于不用局部变量或者全局变量求字符串长度
- C++ 只能指针 auto_ptr 原理 解析 源码
- InternetCrackUrl
- oracle 序列(2)
- Artech-博客园-IIS与ASP.NET管道
- SQL Server 2008中的稀疏列和列集
- 关于onConfigurationChanged
- Codeforces Beta Round #1(A,B)
- 日期选择UIDatePicker相关
- SIFT算法学习心得
- ASP.NET程序与页面生命周期
- 挂载硬盘出错问题的解决
- What's the difference between “local” and “my” in Perl
- gvim常用的配置及插件