Tengo una consulta de base de datos que podría dar lugar a un gran conjunto de resultados. El cliente que muestra los datos recibe los datos a través de la red, por lo que la idea era minimizar la cantidad de datos transferidos recuperando solo los primeros 50 resultados de la base de datos y enviándolos al cliente. Luego ofreceré la posibilidad de saltar a la segunda página para recuperar los próximos 50 resultados, etc. (algo similar a lo que ofrece Google, por ejemplo)
La pregunta es cuál es la forma efectiva de implementar la paginación. Quiero asegurarme de que mssql use la memoria caché tanto como sea posible y que no se ejecute lo mismo una vez más cada vez que cambie la paginación.
Hay más clientes que consultan la base de datos al mismo tiempo. Motor sql usado: MS SQL 2005
Mis ideas fueron:
- Utilice sql statemenst preparado para garantizar el intercambio del plan de ejecución
- use la variable ROW_COUNT para recuperar solo las filas necesarias
¿Pero es realmente la forma más efectiva? ¿O cree que sería mejor recuperar todo el conjunto de resultados e implementar la paginación en el código que envía los datos al cliente?
Gracias por tus consejos!
Saludos, Tomás
fuente
Depende de tu entorno. Configuraría una prueba usando ambos métodos y vería cuál funciona mejor para usted. Personalmente, me gustaría paginar en el servidor. Menos datos a través del cable y menos datos en la RAM del cliente, mejor. Si puede controlar las especificaciones de la máquina del cliente, todo el tráfico se realiza a través de una LAN no saturada y los clientes siempre navegan por varias páginas rápidamente, entonces es posible que desee buscar en el cliente.
fuente