[英]LINQ DBcontext is taking too long to load data
當我在SQL Server Management Studio中執行存儲過程時,它會在不到1秒的時間內返回結果,但是當我嘗試通過LINQ和此代碼加載數據時,最多需要5秒鍾。 有什么建議嗎?
[global::System.Data.Linq.Mapping.FunctionAttribute(Name="dbo.SP_SELECT_MyData")]
public ISingleResult<SP_SELECT_MyDataResult> SP_SELECT_MyData([global::System.Data.Linq.Mapping.ParameterAttribute(DbType="VarChar(50)")] string bname)
{
IExecuteResult result = this.ExecuteMethodCall(this, ((MethodInfo)(MethodInfo.GetCurrentMethod())), bname);
return ((ISingleResult<SP_SELECT_MyDataResult>)(result.ReturnValue));
}
這條線一直都在
IExecuteResult result = this.ExecuteMethodCall(this, ((MethodInfo)(MethodInfo.GetCurrentMethod())), bname);
感謝@Ulugbek Umirov提供了指向良好答案的鏈接,這是由於緩存中的BAD執行計划導致未使用索引而導致的。 通過在存儲過程中使用WITH RECOMPILE
創建索引並禁用緩存選項,可以大大提高性能。
並且通過使用全文本搜索索引來改進過濾器選項,從而將其進一步完善至完美,因為像LIKE '%abc%'
兩端都帶有通配符的運算符不能使用非聚集索引,而全文本搜索索引可以。
我會發表評論,但沒有足夠的聲譽。
它第二次運行更快嗎? 如果是這樣,那么您所描述的內容聽起來可以通過使用編譯查詢來解決,但根據這篇文章,編譯查詢不適用於存儲過程: http : //aspguy.wordpress.com/2008/08/15 /加速,LINQ到SQL與-編譯- LINQ查詢/
您可以改用linq編寫查詢並使用編譯后的查詢,還是必須將其存儲在sproc中?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.