此文章主要向大家讲述的是SQL Server 2008稀疏列与SQL Server 2008列集这两个新增的特性的经验总结的描述,如果你对SQL Server 2008稀疏列与SQL Server 2008列集这两个新增的特性的经验有兴趣的话,你就可以对以下的文章点击观看了。
在江川等地区,都构建了全面的区域性战略布局,加强发展的系统性、市场前瞻性、产品创新能力,以专注、极致的服务理念,为客户提供成都做网站、网站制作 网站设计制作按需制作网站,公司网站建设,企业网站建设,品牌网站制作,成都营销网站建设,外贸营销网站建设,江川网站建设费用合理。
我的总结如下
1. 稀疏列主要是为了提供对可空字段的更好一个存储机制,它可以节省空间(具体说它在真正空值的时候就不占空间),但也会带来一些性能方面的影响。所以要有所权衡。
SQL Server 2008稀疏列主要使用场景:一个实体有很多属性列,但很多属性都可能填不满。这在以前我们称为属性集问题。
稀疏列不是一个数据类型,它是一个列的属性而已。
2. 列集是可以定义所有稀疏列的集合。这是一个XML数据类型。如果为多个SQL Server 2008稀疏列定义了一个列集,那么针对这些列的修改,就既可以直接修改这些列,也可以通过一次性通过修改列集字段来完成。列集字段其实是一个计算字段。
下面来看一个例子
首先,看看如何使用稀疏列。这里的关键在于定义的时候使用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然后,我们看看如何把列集与SQL Server 2008稀疏列进行结合使用
- 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
使用列集之后,既可以直接使用列集插入数据,也可以使用SQL Server 2008稀疏列本身插入数据
- 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')
- GO
- INSERT DocumentStoreWithColumnSet (DocID, Title, SpecialPurposeColumns)
- VALUES (3, 'Tire Spec 2','
AXW9R411 38 ')
GO有意思的是,此时如果再以SELECT *的语法查询该表的话,那些稀疏列默认是不会被返回的,而只是返回列集
当然啦,如果还是想返回SQL Server 2008稀疏列本身的内容,我们可以通过下面的语法
- SELECT DocID, Title, ProductionSpecification, ProductionLocation FROM
- DocumentStoreWithColumnSet WHERE ProductionSpecification IS NOT NULL ;
至于更新,和插入一样,两种方式都是可以的,且效果一样
文章题目:SQLServer2008稀疏列与列集的经验总结
URL分享:http://www.gawzjz.com/qtweb2/news44/20094.html
网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联