Domanda

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>();

Abbiamo una lunga ricerca del tipo, e consumano molto tempo per ottenere i libri e l'ordinamento, dopo il test delle prestazioni, abbiamo trovato il tempo di risposta per visualizzare la pagina contenente la query supera i 10 secondi, e dobbiamo cercare di risolvere questo e ridurre il tempo di risposta.

Fare Qualcuno ha qualche suggerimento?

È stato utile?

Soluzione

In genere esaminare lo SQL per vedere che cosa sta producendo, che si può fare in linea. V'è uno strumento che può aiutare a farlo, si chiama LINQPad, ed è possibile creare una query LINQ e giocare con tweaking la query LINQ. Inoltre, alla ricerca di luoghi di aggiungere indici; questo può accelerare le prestazioni troppo (troppi indici può compromettere le prestazioni in modo da essere troppo attento).

Altri suggerimenti

Che cosa stai cercando di fare? Mi può dare un'idea dello schema qui?

Questo mi sembra una dichiarazione strano per me dato che non so lo schema:

  

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

Comunque, sto andando prendere un colpo nel buio qui e dire che si potrebbe avere un problema con:

  

eventDC.GetBooks ()

se questo metodo chiama una stored procedure o comunque fa un "SELECT * FROM libri" sul database, allora che cosa si sta effettivamente facendo è:

  1. La selezione di tutti i libri dal DB
  2. Prendendo la lista risultante e selezionando solo i libri che si desidera da esso

Se questo è il caso, allora questo è probabilmente la più grande problema.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top