簡體   English   中英

LINQ DBcontext需要太長時間才能加載數據

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM