You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在SSMS中测试带参数SQL查询性能并复用原有执行计划?

在SSMS中测试带参数慢SQL的性能(保留原有执行计划)

首先修正你提供的SQL语法错误:SELECT 1, 2, 3, 末尾多了一个逗号,需移除才能正常执行。

以下是几种满足需求的操作方法:

方法1:参数化执行+强制复用原有执行计划

  1. 打开SSMS的包括实际执行计划(快捷键Ctrl+M)和包括客户端统计信息(快捷键Ctrl+Shift+S),方便后续查看性能指标(执行时间、CPU/IO消耗、运算符成本等)。
  2. 先获取原有执行计划的XML内容:通过系统视图查询缓存中的计划,匹配原查询文本即可提取
    SELECT qp.query_plan
    FROM sys.dm_exec_query_stats qs
    CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) st
    CROSS APPLY sys.dm_exec_query_plan(qs.plan_handle) qp
    WHERE st.text LIKE '%SELECT 1, 2, 3 FROM MyTable WHERE Column1 = @parameter1%'
    
  3. 定义参数并执行查询,通过OPTION (USE PLAN)强制复用原有计划:
    DECLARE @parameter1 [替换为原参数的实际数据类型], @parameter2 [替换为原参数的实际数据类型]
    SET @parameter1 = '你的特定测试值'
    SET @parameter2 = '你的特定测试值'
    
    SELECT 1, 2, 3
    FROM MyTable 
    WHERE Column1 = @parameter1 AND Column2 = @parameter2
    OPTION (USE PLAN N'<将上面获取的执行计划XML内容粘贴到这里>')
    

方法2:通过查询存储重用执行计划

如果你的数据库已开启查询存储:

  1. 在SSMS的“数据库”节点下找到“查询存储”,展开后选择“顶级资源消耗查询”或“查询存储 > 查询”。
  2. 搜索匹配到目标SQL语句,右键选择“查看执行计划”。
  3. 在执行计划窗口中点击“执行”按钮,输入你指定的参数值,系统会自动复用原有执行计划执行查询。

方法3:保持参数化一致性自动复用计划

原查询是参数化格式,只要你在SSMS中执行的查询与原查询参数名、类型完全一致,SQL Server会自动复用缓存中的原有执行计划:

DECLARE @parameter1 [替换为原参数的实际数据类型], @parameter2 [替换为原参数的实际数据类型]
SET @parameter1 = '你的特定测试值'
SET @parameter2 = '你的特定测试值'

SELECT 1, 2, 3
FROM MyTable 
WHERE Column1 = @parameter1 AND Column2 = @parameter2

执行前可通过以下语句确认缓存中是否存在该计划:

SELECT cp.usecounts, qp.query_plan
FROM sys.dm_exec_cached_plans cp
CROSS APPLY sys.dm_exec_sql_text(cp.plan_handle) st
CROSS APPLY sys.dm_exec_query_plan(cp.plan_handle) qp
WHERE st.text LIKE '%SELECT 1, 2, 3 FROM MyTable WHERE Column1 = @parameter1%'

注意事项

  • 确保参数数据类型与原查询完全匹配,否则可能触发新的执行计划生成。
  • 若原有执行计划是因参数嗅探生成,强制复用前需确认该计划对当前测试参数的合理性,但按需求需保持原有计划不变,可忽略此验证。

内容的提问来源于stack exchange,提问作者Liero

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 19:23:19