-1
我使用C#實體框架,並已下面的方法來計算我的學生包括影響Count的性能嗎?
public static int GetStudentCount()
{
using(SchoolContext ctx = new SchoolContext())
{
return ctx.Student.Include("Subjects").Include("Subjects.SubjectsDescription").Include("Teacher").Count();
}
}
問題的: 是否有性能差異,以這種方法嗎?
public static int GetStudentCount()
{
using(SchoolContext ctx = new SchoolContext())
{
return ctx.Student.Count();
}
}
更新:由於一些用戶想知道爲什麼加入Include()
在所有 - 我想重用與藪過濾器的方法。所以,我有一個方法來獲取所有學生GetStudent
,並使用相同的代碼來過濾數據,只是返回統計數(用於數據庫分頁)
public static int GetStudentCount(Filter f)
{
using(SchoolContext ctx = new SchoolContext())
{
return GetStudents(ctx.Student.AsQueryable(),f).Count(); // has filters an Include()
}
}
測試一下,看看。 –
@GiladGreen它很難測試,因爲SQL有緩存,我沒有足夠的數據來注意不同之處 – Toshi
@Toshi - 它影響的答案是「是」 - 添加包含創建連接。但正確的做法只是測試 - 爲此 - 填充數據,執行大量時間的查詢並做一個平均數(如果可以,使用數據庫屬性進行緩存) –