-1
は、私はC#Entity Frameworkのを使用してIncludeは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 - 影響力は「はい」です - 結合を作成すると結合が追加されます。しかし、正しいことはテストだけです。そのために、データを取り込み、大量の時間のクエリを実行し、平均化を行います(または可能であればキャッシングなしでDBプロパティを使用して再生する)。 –