我用的是EF 4,我发现了另一个怪癖.基本上,我有一个相当简单的存储过程,负责从SQL检索数据并返回一个复杂类型。我通过函数导入将存储过程添加到我的模型中。它或多或少是在下面的结构中。
using (ModelContainer context = GetNewModelContainer())
{
return context.GetSummary(id, startDate, endDate, type).ToList();
} 我应该指出,上面的代码是在远程上执行的。执行过程需要近10分钟。但是,通过远程连接使用,存储过程几乎是瞬间执行的。
返回的记录只有100条左右,每条记录大约有30个字段。
当我在本地(没有远程连接)对客户数据库的备份运行上面的代码时,它将立即执行。
我很想知道是什么导致了这场演出的轰动。10分钟是不能接受的。我不认为这是存储过程。可能是由于远程连接导致的序列化吗?对我如何追踪和纠正罪魁祸首有什么想法?
发布于 2012-02-05 01:06:21
您所描述的症状通常与错误缓存的查询计划相关联(由于参数嗅探)。
确保您的统计数据是最新的,如果索引是分段的,则重新生成它们。
规范的引用是:应用程序慢,在SSMS中快?是绝对必要的读物。
可能有用的SO链接:
https://stackoverflow.com/questions/9146048
复制相似问题