当前位置:首页 > 系统运维 > 正文内容

SQL Server 2008稀疏列与列集的经验总结

a8116255316年前 (2010-07-13)系统运维9

此文章主要向大家讲述的是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  *** allint 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  *** allint 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','<ProductionSpecification>AXW9R411</ProductionSpecification><ProductionLocation>38</ProductionLocation>')    

GO有意思的是,此时假如再以SELECT *的语法查询该表的话,那些稀疏列默认是不会被返回的,而只是返回列集

当然啦,假如还是想返回SQL Server 2008稀疏列本身的内容,我们可以通过下面的语法

SELECT  DocID, Title, ProductionSpecification, ProductionLocation FROM    DocumentStoreWithColumnSet WHERE ProductionSpecification IS NOT NULL ;  

至于更新,和插入一样,两种方式都是可以的,且效果一样

扫描二维码推送至手机访问。

版权声明:本文由2345好导航站长资讯发布,如需转载请注明出处。

本文链接:http://www.2345hao.cn/blog/index.php/post/21930.html

分享给朋友:

“SQL Server 2008稀疏列与列集的经验总结” 的相关文章

windows 7系统的电脑发出嘟嘟嘟的声音该怎么解决?

windows 7系统的电脑发出嘟嘟嘟的声音该怎么解决?

在某些电脑中,机器内部蜂鸣器与系统的声音输出方案是相关联的,这样一来会导致当系统输出声音时,即使电脑没有连接外部音响或耳机,也会通过内置蜂鸣器发出“嘟嘟哔哔”的声音。这个问题主要出现在Windows 7电脑中,假如你的电脑恰好遇到了这样的问题,可参考下面的方法来解决: 1、在桌面“计算机”图标上右...

如何设置Win 7通知栏重新显示电源按钮

如何设置Win 7通知栏重新显示电源按钮

有些使用本本的朋友可能会发现,右下角通知栏区域会无法显示电源按钮,导致在插上电源或者是使用电池的时候都无法进行区分。造成这种情况大部分都是因为使用了第三方修改过的系统版本或者对于系统优化过度,所以今天就来解决这个问题。 第一步:在开始菜单的搜索窗口输入“gpedit.msc”,进入组策略编辑器,依...

Windows7开机后出现黑一下屏性能降低

Windows7开机后出现黑一下屏性能降低

打开IE浏览器的时候、聊QQ的时候、玩游戏的时候… … 这到底是谁惹的祸呢? 很多人都知道Windows 7桌面特效全部开启会使系统性能降低,那到底是哪个特效导致的这一情况呢? 解决办法: 右键计算机,高级系统设置-性能-设置-关闭”任务栏和开始菜单使用动画“和”最大化和最小化动态显示窗口“...

windows 7查看电脑近期使用情况确定有没有被他人使用

windows 7查看电脑近期使用情况确定有没有被他人使用

我一个朋友最近装装了Windows 7,他总感觉有人用了他的电脑,但是一直不确定,他想知道有没有人动用他的电脑,问我有没有办法 我说设置一下就行了: 启动Windows 7,在搜索栏中输入编辑组,马上就搜索到了编辑组策略,点击即可启动程序编辑组策略。依次展开组策略左侧树形列表的计算机配置/管理模...

windows 7系统件夹和文件都不显示名字如何解决

windows 7系统件夹和文件都不显示名字如何解决

假如碰到电脑里的文件夹和文件全都不显示名字了(如下图),是不是电脑中毒了呢 请教下笔者有没好的解决方法!下面是笔者给出的答案,希望能够帮助到大家! 首先打开你用来装图片的文件夹(缩略图下面的文字不显示的文件夹),然后但击工具栏上的“查看”选择“平铺”, 下面就是关键:要按住SHIFT键不...

windows 7系统怎么取消禁ping命令?

windows 7系统怎么取消禁ping命令?

当我在虚拟机的linux系统中ping本机的ip发现ping不通,而本机可以ping通虚拟机中的ip。应该是出于安全考虑吧,Windows 7默认在防火墙里禁止了。 1、查看主机ip 打开“开始”程序中的“附件”,找到“命令提示符”打开。输入命令:ipconfig,可以看到本机的ip是192.1...