2012-02-05 120 views
0

我使用EF 4,而我陷入了另一个怪癖......基本上,我有一个相当简单的存储过程,负责从SQL检索数据并返回复杂类型。我通过函数导入将存储过程添加到我的模型中。在以下结构中或多或少。通过远程连接的实体框架存储过程

using (ModelContainer context = GetNewModelContainer()) 
{ 
    return context.GetSummary(id, startDate, endDate, type).ToList(); 
} 

我应该指出,上面的代码执行在远程SQL连接。它需要将近10分钟才能执行。但是,通过远程连接使用SQL Server Management Studio时,存储过程几乎可以即时执行。

只有100个记录被返回,每个记录大约有30个字段。

当我在客户数据库的备份上运行上面的本地代码(无远程连接)时,它会毫不迟延地执行。

我难以忍受可能导致此性能下降的原因。 10分钟是不可接受的。我不认为这是存储过程。由于远程连接可能是序列化吗?关于如何追踪和纠正罪魁祸首的任何想法?

回答

3

您所描述的症状通常与缓存不正确的查询计划相关联(由于参数嗅探)。

确保您的统计信息是最新的,并在索引碎片时重建索引。

规范的参考是:Slow in the Application, Fast in SSMS?绝对必要的阅读。

可能很有用,这样的链接:

+0

感谢您的参考。我有一种感觉,这是沿着这些线。我将花一些时间阅读上述链接。我会跟进我的发现。再次感谢。 – 2012-02-06 12:46:15