2012-08-26 60 views
1

我正在使用SQL Server精簡版4.0作爲我的數據庫和使用實體框架。我有一個DataGrid做一些計算(使用8列x 10行的測試數據,calcs每行執行一次,所以只有10次)。簡單的實體查詢使用SQL Server CE 4.0慢

如果我使用任何實體查詢,calc方法明顯變慢。當我刪除它們時,結果是即時的(無法辨別時間延遲)。

考慮的這一行代碼:

Account a = (from accounts in context.Account select accounts).FirstOrDefault(); 

而是這樣做的,我是從context.Account抓起數據,並把它變成一個列表之前擊中,做Calcs(計算)方法:

List<Account> accountsTable = context.Account.ToList(); 

然後用這個代替上面的代碼行,除了它查詢列表而不是實體外,代替上面的代碼行:

Account a = (from accounts in accountsTable select accounts).FirstOrDefault(); 

使用List<Account>方法沒有性能下降。

我知道使用該實體將查詢數據庫並創建一些開銷 - 但使用本地數據庫(即沒有網絡問題等)和10行數據,我會認爲這是可以忽略的。

我看到這個帖子:SQL Server CE 4.0 Entity Framework, query runs realy slow (compared with SQL Server CE 3.5)但這不是問題在這裏。

我必須錯過簡單的東西 - 如果任何人都可以啓發我,我會非常感激。

回答

0

是否有使用以下時,性能增益:

using System.Linq; 
Account a = context.Account.FirstOrDefault(); 

我懷疑你的查詢是先解決(到一個列表),然後傳遞到FirstOrDefault。我相信直接運行FirstOrDefault會導致您的代碼在更少的記錄中讀取,從而獲得更好的性能。

相關問題