Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 相同查询的查询执行计划_Sql_Sql Server - Fatal编程技术网

Sql 相同查询的查询执行计划

Sql 相同查询的查询执行计划,sql,sql-server,Sql,Sql Server,观察: 我使用cmd.ExecuteNonQuery()通过.net代码执行相同的查询,并通过传递参数值直接在SQL Server Management Studio中执行相同的查询 当我通过代码执行它时,它会运行很长一段时间(15-20分钟),而当我在SQL Server中使用相同的参数执行时,它会在几秒钟内完成 花费较长时间的原因是查询的性能问题,通过在其中一个表中引入非聚集索引解决了这个问题 我仍然想知道,尽管环境条件相同,为什么SQL Server要提前几秒钟。是因为执行计划的不同吗?有

观察:

我使用
cmd.ExecuteNonQuery()
通过.net代码执行相同的查询,并通过传递参数值直接在SQL Server Management Studio中执行相同的查询

当我通过代码执行它时,它会运行很长一段时间(15-20分钟),而当我在SQL Server中使用相同的参数执行时,它会在几秒钟内完成

花费较长时间的原因是查询的性能问题,通过在其中一个表中引入非聚集索引解决了这个问题


我仍然想知道,尽管环境条件相同,为什么SQL Server要提前几秒钟。是因为执行计划的不同吗?有什么想法吗?

嗨,是的,我已经有同样的问题了。sql server正在根据状态的执行位置选择不同的计划。一种解决方案是在代码中再次声明变量,并用参数设置它们。希望对您有所帮助。由于不同的会话选项,听起来像是不同的计划: