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