了解SQL Server 2012的存储过程功能

日期: 2012-02-22 作者:Richard Ding翻译:冯昀晖 来源:TechTarget中国 英文

在应用新版本的SQL Server数据库之前,一些指导性的建议是非常有必要的。为此,我的建议是了解一些更多存储过程新功能,比如SQL Server 2008 R2中的“MERGE”语句和SQL Server 2012中的列存储索引。   “MERGE”语句: 连接源表和目标表的索引列只包含源表和目标表的列来指定ON从句中的搜索条件。不要包括额外的比较,比如常量值。

如果你使用像表table表达式或者视图这类普通数据库对象负责过滤的行,那就彻底评估一下结果。这些是临时结果集,而且可能产生不正确的结果。如果你使用连接提示,它会在查询中强迫优化器使用在某个点上使用某种连接,使用OPTION(LOOP ……

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

电子邮件地址不会被公开。 必填项已用*标注

敬请读者发表评论,本站保留删除与本文无关和不雅评论的权力。

在应用新版本的SQL Server数据库之前,一些指导性的建议是非常有必要的。为此,我的建议是了解一些更多存储过程新功能,比如SQL Server 2008 R2中的“MERGE”语句和SQL Server 2012中的列存储索引。

  “MERGE”语句:

  • 连接源表和目标表的索引列
  • 只包含源表和目标表的列来指定ON从句中的搜索条件。不要包括额外的比较,比如常量值。如果你使用像表table表达式或者视图这类普通数据库对象负责过滤的行,那就彻底评估一下结果。这些是临时结果集,而且可能产生不正确的结果。
  • 如果你使用连接提示,它会在查询中强迫优化器使用在某个点上使用某种连接,使用OPTION(LOOP JOIN)替代hash连接,它可以绕过索引。
  • 把存储过程中WHEN和ON语句中的所有文字值参数化。如果你做不到这一点,那就创建计划指导类型模板,并制定PARAMETERIZATION FORCE查询提示。做这个设置要小心一点,因为它会影响整个数据库。

  列存储索引:

  • 选择能提供最好压缩效果的列,比如字符或数字列。
  • 按正常方式更新带有列存储索引的表存储过程,先删除索引,然后对表执行数据修改操作。最后重建列存储索引。
  • 对表分区和切换分区。首先,在主表之外切换分区,进入临时表,然后删除列存储索引。在临时表上更新数据然后重建索引。最后,切换临时表回到主表。
  • 带有列存储索引的表不能被更新;一旦你创建了,它们就是制度的。但是,不要把列存储索引用作使表只读的手段。在未来发布的SQL Server中,微软公司会提供非常完善的设置,可以取消update限制。如果你需要让表制度,可以创建一个只读文件组,然后把表移到那个文件组。

相关推荐

  • TT百科:存储过程

    存储的过程可以访问或修改数据库中的数据,但并不绑定到特定的数据库或对象,这提供了许多优点。

  • 升级到SQL Server 2012的七个理由

    微软建议尽快将数据库升级到最新版本。在本文中,我们就来列举七个SQL Server 2012的功能特性,它将成为你升级的主要动力。

  • 用T-SQL在SQL Server 2012中创建用户自定义角色

    SQL Server 2012中引入了两项功能,即创建用户自定义服务器角色和分配服务器级别的权限。本文为初级DBA给出了一个用户自定义服务器角色的示范用例。

  • 认识SQL Server 2012数据仓库一体机

    戴尔和惠普都推出了基于并行数据仓库的SQL Server 2012数据仓库一体机。PDW是一个专门针对硬件一体机设计的大规模并行处理数据仓库平台。