在应用新版本的SQL Server数据库之前,一些指导性的建议是非常有必要的。为此,我的建议是了解一些更多存储过程新功能,比如SQL Server 2008 R2中的“MERGE”语句和SQL Server 2012中的列存储索引。 “MERGE”语句: 连接源表和目标表的索引列只包含源表和目标表的列来指定ON从句中的搜索条件。不要包括额外的比较,比如常量值。
如果你使用像表table表达式或者视图这类普通数据库对象负责过滤的行,那就彻底评估一下结果。这些是临时结果集,而且可能产生不正确的结果。如果你使用连接提示,它会在查询中强迫优化器使用在某个点上使用某种连接,使用OPTION(LOOP ……
我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。
我原创,你原创,我们的内容世界才会更加精彩!
【所有原创内容版权均属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是一个专门针对硬件一体机设计的大规模并行处理数据仓库平台。