为什么在通过sp_executeSQL过程执行时,完全相同的SQL查询结果与不同的执行计划?

正如标题所述,我不明白为什么sp_executeSQL会生成与从Sql Management Studio运行查询完全不同的执行计划。 从SQL管理工作室运行时,我的查询将需要3秒钟,因为通过sp_executeSQL在管理工作室中运行的查询将花费5分钟。 我已经更新了统计数据,并查看了索引,但事实上仍然存在这样的事实:sp_executeSQL的执行计划比直接从我的管理工作室运行sql更糟糕。 所以这是我的问题:为什么执行计划在以这两种不同方式运行查询之间会有很大差异? 谢谢     
已邀请:
看到这个 基本上, 同一程序可以有多个[执行]计划     
考虑一下。执行存储过程时,此过程将具有自己的执行计划。当您执行查询语句时,它将再次拥有自己的执行计划。现在使用sp_executeSQL时,您正在运行此存储过程以动态执行查询。所以本质上它的执行计划是sp_executeSQL和你的查询的组合。     

要回复问题请先登录注册