0
这非常奇怪。的straigthforward代码从代码到直接查询的命令执行时间
using(SqlConnection
{//open connection
using(SqlCommand
{//Specified parameters and SP name
using(SqlDataReader reader = command.ExecuteReader())
{
if (reader.Read())
{
// Parse it and return an object.
return new MyObject
{
prop1 = (int)reader["column1"]
...
propN=reader["columnn"].ToString()
}
片可能需要多达3分钟来执行,而从管理工作室执行相同SP运行在不到一秒钟!
此代码在另一台服务器上运行。我还发现,如果从代码执行,Sql Profiler报告数百万次读取,而在Studio中执行时读取次数少于5000次。
我不知道为什么会这样。任何帮助表示赞赏。 P.S.执行计划是不是和SP绑定在一起,这意味着用户运行它的时候没有什么区别?
可能内部'if(reader.Read())'内部的代码并不像你想象的那么中立。 – Steve 2013-03-20 18:02:42
您可能会尝试的一件事是在从Management Studio执行时以及执行代码时运行SQL Profiler,查看它们每个从数据库明确请求的内容是否有所不同。 – David 2013-03-20 18:05:05
它内部的代码很容易编辑的问题。 – Nickolodeon 2013-03-20 18:22:41