计划指南
来源:互联网 发布:java gbk编码转utf 8 编辑:程序博客网 时间:2024/06/05 04:44
- SQL Server 2008 R2
- SQL Server 2008
- SQL Server 2005
如果您无法或不希望直接在 SQL Server 2012 中更改实际查询文本,则可以使用计划指南来优化查询性能。计划指南通过将查询提示或固定的查询计划附加到查询来影响查询的优化。 当第三方供应商提供的数据库应用程序中的一个小的查询子集没有按预期执行时,计划指南将很有用。 在计划指南中,您需要指定要优化的 Transact-SQL 语句以及包含要使用的查询提示的 OPTION 子句或要用于优化查询的特定查询计划。 当执行查询时,SQL Server 将 Transact-SQL 语句与计划指南进行匹配,然后在运行时将此 OPTION 子句附加到查询,或使用指定的查询计划。
可创建的计划指南总数仅受可用系统资源的限制。 尽管如此,计划指南还是应当限于针对提高或稳定性能的关键查询。 计划指南不应用来影响已部署应用程序的大部分查询负荷。
计划指南不适用于 Microsoft SQL Server 的各个版本。 有关 SQL Server 的版本支持的功能的列表,请参阅 SQL Server 2012 各个版本支持的功能。计划指南在任何版本中都是可见的。 包含计划指南的数据库可以附加到任何版本。 将数据库还原或附加到升级版本的 SQL Server 后,计划指南保持不变。
可以创建以下类型的计划指南。
计划指南的作用域是在其中创建这些计划指南的数据库。 因此,执行查询时,只有处于当前状态的数据库中的计划指南可以与该查询匹配。 例如,如果 AdventureWorks2012 是当前数据库并执行下面的查询:
SELECT FirstName, LastName FROM Person.Person;
则只有 AdventureWorks2012 数据库中的计划指南可以与此查询匹配。但是,如果 AdventureWorks2012 是当前数据库并运行下列语句:
USE DB1;
SELECT FirstName, LastName FROM Person.Person;
则只有 DB1 中的计划指南可以与该查询匹配,这是因为该查询是在DB1 的上下文中执行的。
对于基于 SQL 或 TEMPLATE 的计划指南,SQL Server 通过对 @module_or_batch 和 @params 参数的值逐个字符地进行对比来将这两个值与查询匹配。这意味着必须提供与 SQL Server 在实际批处理中接收的文本完全相同的文本。
当 @type = 'SQL' 且 @module_or_batch 设置为 NULL 时,@module_or_batch 的值将设置为 @stmt 的值。这意味着 statement_text 值的提供格式必须与其提交到 SQL Server 时所采用的格式完全相同(字符对字符)。不会执行内部转换来帮助完成该匹配。
当常规(SQL 或 OBJECT)计划指南和 TEMPLATE 计划指南都适用于语句时,将只使用常规计划指南。
包含要对其创建计划指南的语句的批处理不能包含 USE database 语句。
对模块创建计划指南将会从计划缓存中删除该模块的查询计划。 对批处理创建类型为 OBJECT 或 SQL 的计划指南会删除具有相同哈希值的批处理的查询计划。 创建类型为 TEMPLATE 的计划指南会从该数据库中的计划缓存中删除所有单语句批处理。
任务
主题
说明如何创建计划指南。
创建新的计划指南
说明如何为参数化查询创建计划指南。
为参数化查询创建计划指南
说明如何通过使用计划指南控制查询参数化行为。
使用计划指南指定查询参数化行为
说明如何在计划指南中包括固定查询计划。
将现有查询计划应用到计划指南
说明如何在计划指南中指定查询提示。
将查询提示附加到计划指南
说明如何查看计划指南属性。
查看计划指南属性
说明如何使用 SQL Server 事件探查器创建和测试计划指南。
使用 SQL Server Profiler 创建和测试计划指南
说明如何验证计划指南。
升级后验证计划指南
参考
- 计划指南
- 2015社交营销计划指南
- SQL Server 2005 查询计划指南
- SQL Server 2005 查询计划指南
- 细化解析:SQL Server2005查询计划指南
- Mobile Market百万青年创业计划活动指南
- Asterisk权威指南/第六章 拨号计划基础
- 计划
- 计划
- 计划
- 计划
- 计划
- 计划
- 计划
- 计划
- 计划
- 计划
- 计划
- 《我的第一本c++书》学习笔记:STL中的一些通用算法(一)
- jquery学习(一)
- Micaps3.2二次开发实例教程-6
- 打印Java环境参数
- GNU bash实现机制与源代码简析
- 计划指南
- HMM学习笔记_1(从一个实例中学习DTW算法)
- Erlang ODBC 处理中文
- LeetCode —— Anagrams
- SVN命令总结
- 用c++编写一个不能被继承的类(但是可以在类外部定义该类的对象)
- 使用cout标准输出如何控制小数点后位数
- iOS AvPlayer AvAudioPlayer音频的后台播放问题
- Winsows消息处理和多线程编程