2010-05-09 30 views
2

我得到一个非常基本的EF语句超时。我只是从一个Entity.Title.StartsWith(“测试”)和一个.Take(25)单个表中进行选择。当我运行这个搜索,返回没有结果时,我得到一个超时。实体框架性能不一致与Sql管理工作室相比

如果我剖析并获取sql语句,它看起来很好,如果我在Management Studio中运行该SQL,它将在几分之一秒内运行!

为什么相同的查询在管理工作室中运行亚秒,并由EF生成超时,并从Asp.Net应用程序调用?

回答

4

这可能意味着您需要重建统计数据。

这是由于过期统计信息导致的缓存不正确的查询计划的常见症状。

看到这个答案:Why are there performance differences when a SQL function is called from .Net app vs when the same call is made in Management Studio

这将更新所有统计信息,并刷新视图和存储的特效(但要小心,用于生产的机器上运行):

EXEC sp_updatestats 

EXEC sp_refreshview 

-- Probably won't need this as your are not using stored procs 
EXEC sp_msForEachTable 'EXEC sp_recompile ''?''' 
+1

小麦 - 感谢天哪你就像身边:) – 2010-05-09 04:04:39