Extraer todos los datos en la base de datos SQL y luego filtrarlos usando LINQ

Tengo una lista de permisos de usuario. Estoy pensando en sacar todos los datos del UserPermission tabla, colóquelo en caché y luego fíltrelo por userID utilizando LINQ.

Entonces, la próxima vez que alguien intente acceder a la pantalla de permisos de usuario, tendré los datos en caché y solo filtraré y mostraré la base necesaria en el ID de usuario.

¿Hay algún rendimiento en hacerlo? ¿O aún más rápido para filtrarlo en la base de datos/capa de datos?

preguntado el 22 de mayo de 12 a las 12:05

¿Qué tipo de base de datos? ¿Cuántos usuarios? ¿Con qué frecuencia acceden a esa pantalla? Creo que, por lo general, es más rápido dejar que la base de datos haga el filtrado en lugar de almacenar en caché de forma optimista. todo en la base de datos -

Ponga la lógica del filtrado en una clase y hágalo lo más simple posible (creo que pasar por la base de datos será el indicado). Luego, si realiza algunas pruebas de rendimiento o debido al uso real de la aplicación ve que el rendimiento no es bueno, comience a pensar en optimizar. alturl.com/b3dt2 -

bueno, estaba pensando en usarlo en casi todo mi módulo, no en particular solo en UserPermission. Usaré MS SQL 2008 y ASP.NET 4.0 C#. -

2 Respuestas

Hay 2 factores en juego aquí

  1. La velocidad de filtrado de datos a través de LINQ
  2. La velocidad de filtrar los datos a través de SQL y devolver esos datos desde su almacén de datos a la aplicación

En términos generales, para pequeños conjuntos de datos, la diferencia entre 1 y 2 será insignificante.

Para grandes conjuntos de datos con un resultado pequeño, el 2. tendrá un mejor rendimiento

Para grandes conjuntos de datos con un gran resultado, el 1. tendrá un mejor rendimiento

Pero, por supuesto, esta generalización es totalmente inútil ya que todo depende de su entorno y su código.

contestado el 22 de mayo de 12 a las 12:05

Debe sopesar la latencia, el rendimiento y los datos obsoletos.

Siempre es diferente para diferentes casos de uso...

Pero este tipo de cosas ya están integradas en .net: busque proveedores de autorización de ASP.NET

contestado el 22 de mayo de 12 a las 12:05

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.