详解SQL Server 2008迁移查询计划

大多数情况下,将数据库升级到 SQL Server 2008 会提高查询性能。 但是,如果您具有已针对性能进行过认真优化的任务关键查询,在升级前***为每个查询创建一个计划指南,以保留这些查询的查询计划。 如果在升级后,查询优化器为一个或多个查询选择了效率较低的计划,则可以启用这些计划指南并强制查询优化器使用升级前的计划。

若要在升级前创建计划指南,请按照以下步骤执行操作:

通过使用 sp_create_plan_guide 存储过程并在 USE PLAN 查询提示中指定查询计划来记录每个任务关键查询的当前计划。

验证计划指南是否适用于此查询

将数据库升级到 SQL Server 2008。

计划保留在升级后的数据库中的计划指南中,如果在升级后计划的性能出现退步,则这些计划将用作后备计划。
建议您在升级后不要启用计划指南,因为由于统计信息进行了更新,您可能会错过新版本中的更好计划或者重新编译所带来的益处。

如果在升级后选择了效率较低的计划,可以激活所有计划指南或部分计划指南以取代新计划。

示例

下面的示例显示如何通过创建计划指南来为查询记录升级前的计划。

步骤 1:收集计划

计划指南中记录的查询计划必须采用 XML 格式。 可通过以下方式生成 XML 格式的查询计划:

SET SHOWPLAN_XML
SET STATISTICS XML

查询 sys.dm_exec_query_plan 动态管理函数的 query_plan 列。

SQL Server Profiler Showplan XML、Showplan XML Statistics Profile 和 Showplan XML For Query Compile 事件类。

下面的示例通过查询动态管理视图收集语句

 SELECT City, StateProvinceID, PostalCode FROM Person.Address ORDER BY PostalCode DESC; 
的查询计划。
USE AdventureWorks;
GO
SELECT query_plan
FROM sys.dm_exec_query_stats AS qs
CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) AS st
CROSS APPLY sys.dm_exec_text_query_plan(qs.plan_handle, DEFAULT, DEFAULT) AS qp
WHERE st.text LIKE N'SELECT City, StateProvinceID,

PostalCode FROM Person.Address ORDER BY PostalCode DESC;%’;

GO

步骤 2:创建计划指南以强制实施计划

在计划指南中使用 XML 格式的查询计划(通过上述任一方法获取),将该查询计划作为字符串文字复制并粘贴在 sp_create_plan_guide 的 OPTION 子句中指定的 USE PLAN 查询提示中。

在 XML 计划本身中,先将计划中出现的引号 (‘) 通过第二个引号进行转义,然后再创建计划指南。 例如,对于包含 WHERE A.varchar = ‘This is a string’ 的计划,必须通过将该代码修改为 WHERE A.varchar = ”This is a string” 来进行转义。

下面的示例为步骤 1 中收集的查询计划创建计划指南,并在 @hints 参数中插入此查询的 XML 显示计划。 为简洁起见,此示例中仅包括部分显示计划输出。

EXECUTE sp_create_plan_guide
@name = N'Guide1',
@stmt = N'SELECT City, StateProvinceID, PostalCode

FROM Person.Address ORDER BY PostalCode DESC;',
@type = N'SQL',
@module_or_batch = NULL,
@params = NULL,
@hints = N'OPTION(USE PLAN N''<ShowPlanXML xmlns=''''

http://schemas.microsoft.com/sqlserver/2004/07/showplan''''
Version=''''0.5'''' Build=''''9.00.1116''''>
<BatchSequence><Batch><Statements><StmtSimple>

</StmtSimple></Statements></Batch>
</BatchSequence></ShowPlanXML>'')';
GO

步骤 3:验证计划指南是否适用于查询

再次运行查询,并检查生成的查询计划。 您应看到该计划与您在计划指南中指定的计划相符。

【编辑推荐】

  1. SQL Server 2005常见问题浅析
  2. 并行查询让SQL Server加速运行
  3. SQL Server数据库优化经验总结

文章来源网络,作者:运维,如若转载,请注明出处:https://shuyeidc.com/wp/270935.html<

(0)
运维的头像运维
上一篇2025-05-08 01:28
下一篇 2025-05-08 01:29

相关推荐

  • 个人主题怎么制作?

    制作个人主题是一个将个人风格、兴趣或专业领域转化为视觉化或结构化内容的过程,无论是用于个人博客、作品集、社交媒体账号还是品牌形象,核心都是围绕“个人特色”展开,以下从定位、内容规划、视觉设计、技术实现四个维度,详细拆解制作个人主题的完整流程,明确主题定位:找到个人特色的核心主题定位是所有工作的起点,需要先回答……

    2025-11-20
    0
  • 社群营销管理关键是什么?

    社群营销的核心在于通过建立有温度、有价值、有归属感的社群,实现用户留存、转化和品牌传播,其管理需贯穿“目标定位-内容运营-用户互动-数据驱动-风险控制”全流程,以下从五个维度展开详细说明:明确社群定位与目标社群管理的首要任务是精准定位,需明确社群的核心价值(如行业交流、产品使用指导、兴趣分享等)、目标用户画像……

    2025-11-20
    0
  • 香港公司网站备案需要什么材料?

    香港公司进行网站备案是一个涉及多部门协调、流程相对严谨的过程,尤其需兼顾中国内地与香港两地的监管要求,由于香港公司注册地与中国内地不同,其网站若主要服务内地用户或使用内地服务器,需根据服务器位置、网站内容性质等,选择对应的备案路径(如工信部ICP备案或公安备案),以下从备案主体资格、流程步骤、材料准备、注意事项……

    2025-11-20
    0
  • 如何企业上云推广

    企业上云已成为数字化转型的核心战略,但推广过程中需结合行业特性、企业痛点与市场需求,构建系统性、多维度的推广体系,以下从市场定位、策略设计、执行落地及效果优化四个维度,详细拆解企业上云推广的实践路径,精准定位:明确目标企业与核心价值企业上云并非“一刀切”的方案,需先锁定目标客户群体,提炼差异化价值主张,客户分层……

    2025-11-20
    0
  • PS设计搜索框的实用技巧有哪些?

    在PS中设计一个美观且功能性的搜索框需要结合创意构思、视觉设计和用户体验考量,以下从设计思路、制作步骤、细节优化及交互预览等方面详细说明,帮助打造符合需求的搜索框,设计前的规划明确使用场景:根据网站或APP的整体风格确定搜索框的调性,例如极简风适合细线条和纯色,科技感适合渐变和发光效果,电商类则可能需要突出搜索……

    2025-11-20
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注