estoy usando interfaces de IQueryable<T>
lo largo de mi solicitud y aplazar la ejecución de SQL en la base de datos hasta que métodos como .ToList()
count VS seleccionar en LINQ - ¿cuál es más rápido?
que tendrá que encontrar el Conde de ciertas listas veces -without- necesidad de utilizar los datos en el ser lista contado Sé por experiencia SQL que un SQL COUNT() es mucho menos trabajo para el DB que la sentencia SELECT equivalente que devuelve todas las filas.
Así que mi pregunta es: ¿será menos trabajo en la base de datos para devolver el recuento de Count()
método de la IQueryable<T>
's que la reproducción de la IQueryable<T>
a una lista e invocando el método de la lista Count()
?
Sospecho que, dado que ToList()
disparará el SELECT sql y luego en una consulta separada cuente las filas. Espero que el Count()
en el IQueryable<T>
simplemente represente el sql para una consulta sql COUNT() en su lugar. Pero no estoy seguro. ¿Tú sabes?
thanx Jon. Puedo verificar que el método Count() de IQueryable hace gen el SQL COUNT() correcto en lugar de la propiedad Count de la lista que debe tener activado el SELECT. Aquí también hay un TextWriter Kool para aquellos que quieren ver el registro: http: //www.u2u.info/Blogs/Kris/Lists/Posts/Post.aspx? ID = 11 –
¡El COUNT del servidor Sql aún será lento ya que causa un escaneo de tabla! – Slaggg
@Slaggg, si tiene un índice, solo realizará un escaneo de índice en el índice más pequeño que tenga. Si no tiene índices, aún reducirá la carga de red en el servidor de la base de datos (en comparación con la devolución de todas las filas). –