У меня проблема производительности с одним (довольно длинным) запросом, выполнение которого занимает около 1:30 мин.Мне удалось найти часть, выполнение которой (слишком) занимает много времени, но теперь мне нужны советы по оптимизации моего запроса.
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)
};
Ошибка производительности # 1
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)
Удалив эти две части, я смог ускорить запрос до 8 секунд.
Любое предложение будет оценено.Спасибо!