実行に約1:30分かかります(かなり長い)クエリでパフォーマンスに問題があります。実行するには時間がかかりすぎる部分を見つけることができましたが、今はクエリを最適化する方法についてのアドバイスが必要です。私は8秒にクエリをスピードアップすることができたこれらの二つの部分を除去することにより、パフォーマンスの問題#1LINQ-to-Entityクエリの最適化
Manager = t.idManager == null ? "Svi manageri" : (from k in db.Kontakt where k.idKontakt == t.idManager select k.Ime + " " + k.Prezime).SingleOrDefault(),
パフォーマンスの問題#2
DailyCount = db.Daily.Count(dt => dt.idTicket == t.idTicket && dt.Dolazak == true),
DailySum = db.Daily.Count(dt => dt.idTicket == t.idTicket) == 0 ? 0 : db.Daily.Where(dt => dt.idTicket == t.idTicket).Sum(dts => dts.EfektivnoSati)
var ticketList = (from t in db.Ticket
select t).ToList();
int idFirma = Convert.ToInt32(kontakt.idFirma);
gvTicketi.DataSource = from t in ticketList
orderby t.idTicket, t.RedniBroj, t.DatumPrijave
select new
{
t.idTicket,
t.idFirma,
t.idKontakt,
t.idManager,
t.idNadredeniTicket,
TicketNumber = t.idNadredeniTicket + "-" + t.RedniBroj,
t.Biljeske,
t.DatumDo,
t.DatumPrijave,
t.OpciPrioritet,
t.Opis,
t.OpisZatvoren,
t.Prioritet,
t.Status,
t.Tip,
t.VrstaPrijave,
t.Zatvoren,
t.DatumZatvaranja,
t.IzdanRacun,
NazivKontakta = t.Kontakt == null ? "Bez kontakta" : t.Kontakt.Ime + " " + t.Kontakt.Prezime,
Manager = t.idManager == null ? "Svi manageri" : (from k in db.Kontakt
where k.idKontakt == t.idManager
select k.Ime + " " + k.Prezime).SingleOrDefault(),
NazivTvrtke = t.Firma.Naziv,
DailyCount = db.Daily.Count(dt => dt.idTicket == t.idTicket && dt.Dolazak == true),
DailySum = db.Daily.Count(dt => dt.idTicket == t.idTicket) == 0 ? 0 : db.Daily.Where(dt => dt.idTicket == t.idTicket).Sum(dts => dts.EfektivnoSati)
};
。
ご迷惑をおかけして申し訳ございません。ありがとうございました!
あなたは、単一のフォーム休息のためにDailySum = db.Daily.Where(dt => dt.idTicket == t.idTicket)
.Sum(dts => (int?)dts.EfektivnoSati)
でこのクエリを向上させることができます
あなたのDBのテーブルに関連するインデックスを追加することにより、クエリを加速することができます。 – Mathieu