我有一些已被参数化的查询,每次使用SQL Server 2016时它们仍在创建新的执行计划
查询就像:
(@P1 varchar(1043),@P2 varchar(6))
UPDATE table
SET FILEDATA=@P1
WHERE FILEID=@P2
此查询未使用缓存中已生成的执行计划,而是每次执行时都会创建一个新计划
This image shows the plancount an individual query is creating
答案 0 :(得分:0)
过去我曾经发生过这种情况,以下内容为我解决了这个问题:
这听起来很怪异,但尽可能使代码完全合格。以我的经验,如果这样设计的话,更有可能找到现有的计划:
(@P1 varchar(1043),@P2 varchar(6))
UPDATE database.dbo.table
SET database.dbo.table.FILEDATA=@P1
WHERE database.dbo.FILEID=@P2
通常,我不会像这样写我的查询,因为它们似乎很难阅读,但是过去,当我获得大量计划时,它对我有用。