[英]Performance problems using entity framework 5 with large resultset
我正在使用Entity Framework 5,並且正在執行一個查詢,該查詢返回相對較大的結果集(約30,000行)。 查詢本身執行速度非常快,僅需700毫秒左右。
構建linq查詢后,我調用query.Load();
,然后將DataContext.Set<MyType>.Local
作為ObservableCollection
返回給調用方。 結果顯示在可編輯的網格中。
問題出在query.Load();
通話-大約需要60秒,這太長了。 我猜這是EF將結果轉換成.NET對象的地方嗎? 我已經嘗試進行概要分析,但是它不會比IQueryable.Load
更深入:
有什么想法可以改善績效嗎?
順便說一句,我嘗試升級到EF6看看是否有幫助,但實際上變得更糟了, query.Load();
通常需要100秒!
在需要結果之前,不執行Linq to Entities查詢。 那時計算成本是“支付”的。 在此之前,查詢只是一個查詢。 正如Stefan所建議的那樣,您應該嘗試添加一些過濾器,或者至少使用.Skip和.Take方法添加分頁機制。
你也可以查看此有關LINQ分頁MSDN文章。
希望我能幫上忙!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.