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