2010-05-09 38 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