Frage

IQueryable<WebEvent> mySearch = 
    eventDC.GetBooks()
        .Where(p => p.Price.Any(d => d.EventDatetime.Month == fromDate.Month 
                                     && d.EventDatetime.Year == fromDate.Year))
        .WithGroup(groupId)
        .OrderBy(p => p.Price.Where(r => r.Datetime >= fromDate)
                             .OrderBy(q => q.Datetime)
                             .FirstOrDefault().Datetime);
List<Book>ventsList = mySearch.ToList<Book>();

Wir haben eine so lange Abfrage, und es viel Zeit in Anspruch nehmen, die Bücher zu bekommen und Sortierung nach Performance-Test fanden wir die Antwortzeit für die Seite, die diese Abfrage 10 Sekunden nicht überschreiten enthält, und wir müssen versuchen, dieses Problem zu lösen und reduziert die Reaktionszeit.

Hat jemand irgendwelche Vorschläge?

War es hilfreich?

Lösung

Normalerweise untersuchen die SQL, um zu sehen, was es produziert, was Sie tun können, inline. Es ist ein Werkzeug, das Ihnen helfen kann, dass es LinqPad genannt wird, und Sie können eine LINQ-Abfrage erstellen und mit zwicken der LINQ-Abfrage rumspielen. Auch die Suche nach Orten hinzuzufügen Indizes; dies kann auch auf die Leistung beschleunigen (zu viele Indizes können die Leistung schaden so vorsichtig sein).

Andere Tipps

Was genau wollen Sie tun? Können Sie sich eine Vorstellung von dem Schema geben Sie mir hier?

Dies scheint wie eine seltsame Erklärung für mich, da ich das Schema nicht wissen:

  

p => p.Price.Any (d => d.EventDatetime.Month ...

Aber ich werde einen Schuss im Dunkeln nehmen hier und sagen, dass Sie ein Problem haben könnte, mit:

  

eventDC.GetBooks ()

, wenn das Verfahren eine gespeicherte Prozedur aufruft oder auf andere Weise nicht ein „select * from Bücher“ auf der Datenbank, dann, was Sie eigentlich tun, ist:

  1. Auswahl aller Bücher aus der DB
  2. Unter der Ergebnisliste und die Auswahl nur die Bücher, die Sie von ihm wollen

Wenn dies der Fall ist, dann ist das wahrscheinlich Ihr größtes Problem.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top