Pregunta

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

Tenemos una consulta tan largo, y que consumen mucho tiempo para conseguir los libros y la clasificación, después de la prueba de rendimiento, hemos encontrado el tiempo de respuesta de la página que contiene esta consulta excede de 10 segundos, y tenemos que tratar de resolver esto y reducir el tiempo de respuesta.

Hacer Alguien tiene alguna sugerencia?

¿Fue útil?

Solución

Normalmente examinar el código SQL para ver lo que está produciendo, lo que se puede hacer en línea. Hay una herramienta que puede ayudarle a hacer eso, se llama LINQPad, y puede crear una consulta LINQ y jugar con ajustar la consulta LINQ. También, en busca de lugares para añadir índices; esto puede acelerar el rendimiento también (demasiados índices puede perjudicar el rendimiento así que ten cuidado también).

Otros consejos

¿Qué es exactamente estás tratando de hacer? ¿Me puede dar una idea del esquema aquí?

Esto parece una afirmación extraña para mí ya que no sé el esquema:

  

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

Sin embargo, voy a tomar un tiro en la oscuridad aquí y decir que es posible que tenga un problema con:

  

eventDC.GetBooks ()

si ese método llama a un procedimiento almacenado o de otra manera hace un "SELECT * FROM Libros" en la base de datos, entonces lo que en realidad está haciendo es:

  1. Selección de todos los libros de la base de datos
  2. Tomando la lista resultante y seleccionando sólo los libros que desee de él

Si este es el caso, entonces eso es probablemente su mayor problema.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top