我用EF4查詢oracle數據庫。爲什麼Entity Framework .ToList()與.Include非常慢,我該如何加快速度?
我具有2至表POINTS
(具有大約100 000行)和COUNTRIES
,具有countryCode
作爲外鍵
每個點我有下面的方法2中的存儲庫
public List<PointsTable> GetAll()
{
using (Entities context = new Entities())
{
List<PointsTable> theList = context.POINTS_TABLE.ToList();
return theList;
}
}
public List<PointsTable> GetAllComplete()
{
using (Entities context = new Entities())
{
List<PointsTable> theList = context.POINTS_TABLE.Include("Countries").ToList();
return theList;
}
}
的GetAll
需要5秒,但GetAllComplete
需要2分鐘!我使用AsParallel()
但收益是荒謬的。
我可以加快速度嗎?或者是什麼導致速度變慢?
GetAllComplete正在與國家表連接,並獲取所有點和國家,當GETALL是剛開的所有點,而引用的表。 GetAllComplete獲得更多的行。在使用大數據時,使用ToList()獲取所有項目不是一個好主意。 – wudzik
但我完全失去了這裏,如果我在PL/SQL中運行這個,我在下面的兩個查詢之間沒有區別: 'select * from POINTS_TABLE' and 'select * from POINTS_TABLE a left join COUNTRY_TABLE b on B.CountryCode = A.CountryCode' – DonQi
它的EF不是sql,ORM的速度比sql客戶端慢得多,如果你真的需要一次獲取200k行,請使用ado.net而不是EF。但我寧願使用LINQ並逐行獲取,或者100點包裝。 – wudzik