我有一張200,000記錄的表格,其中我只使用.Take()
獲得前10名,但需要大約10秒才能獲取數據。Linq to entities很慢。使用.Take()方法
我的問題是:.Take()
方法是從數據庫中獲取所有數據並篩選客戶端的前10位?
這裏是我的代碼:
mylist = (from mytable in db.spdata().OrderByDescending(f => f.Weight)
group feed by mytable.id into g
select g.FirstOrDefault()).Take(10).ToList();
spdata()
是從存儲過程的函數導入。
感謝
如果你想知道它違背了什麼數據庫,你應該勾廓線直到您的數據庫並檢查日誌,這是瞭解最佳方式。 – Chris
如果spdata()返回200,000,那麼是,它會在客戶端執行它。 –
除了Chris的方法,你也可以嘗試Linqpad並在編寫查詢之後切換到SQL視圖以查看生成的SQL,或者放置一個斷點(使用此方法http://stackoverflow.com/questions/1412863/how -do-i-view-the-the-the-the-the-the-entity-framework)來查看程序執行時產生的內容。 –