重新运行特定的实际查询计划

Jer*_*oen 7 sql-server execution-plan sql-server-2012

我已经捕获了特定查询的实际查询计划。

在此之后,我更改了一些内容(包括更新统计信息)并重新运行该特定查询。现在实际的查询计划是不同的(这是有道理的)。

查询现在运行得更快了。我很好奇新的执行计划是否与此有关,因为其他更改(对 IO 设置、VM 设置、sql 实例重新启动等的更改)也可能导致性能提高。为了测试这一点,我想再次运行查询,并尝试强制 SQL Server 使用旧的执行计划。

问题:有没有办法使用用户提供的执行计划重新运行查询,甚至直接从这样的计划运行查询?

这是我试图弄清楚的:

所以底线:这可能吗?如果是这样:如何?

Mar*_*ith 10

是的。

你需要USE PLAN提示。

您在其中提供XML第一个计划中的 。

SELECT *
FROM T
OPTION (USE PLAN N'<?xml version="1.0" encoding="utf-16"?> ....')
Run Code Online (Sandbox Code Playgroud)

虽然它不能保证计划将完全相同(例如,计算标量运算符可以四处移动),但它可能会非常接近。