Eu tenho uma consulta ao banco de dados que pode resultar em um grande conjunto de resultados. O cliente que exibe os dados recebe os dados pela rede; portanto, a idéia era minimizar a quantidade de dados transferidos, recuperando apenas os 50 primeiros resultados do banco de dados e enviando-os para o cliente. Então, fornecerei a possibilidade de pular para a segunda página para recuperar os próximos 50 resultados etc. (algo semelhante ao que o Google oferece)
A questão é qual é a maneira eficaz de implementar a paginação. Quero ter certeza de que o mssql use o cache o máximo possível e que o mesmo não seja executado novamente sempre que alterar a paginação.
Existem mais clientes que estão consultando o banco de dados ao mesmo tempo. Mecanismo sql usado: MS SQL 2005
Minhas idéias foram:
- Use sql statemenst preparado para garantir o compartilhamento do plano de execução
- use a variável ROW_COUNT para recuperar apenas as linhas necessárias
Mas é realmente a maneira mais eficaz? Ou você acha que seria melhor recuperar todo o conjunto de resultados e implementar a paginação no código que envia os dados para o cliente?
Obrigado por suas dicas!
Atenciosamente, Tomas
fonte
Depende do seu ambiente. Eu configuraria um teste usando os dois métodos e veria qual funciona melhor para você. Pessoalmente, gostaria de paginar no servidor. Menos dados por cabo e menos dados na RAM do cliente, melhor. Se você pode controlar as especificações da máquina cliente, todo o tráfego é feito em uma LAN não saturada e os clientes sempre paginam várias páginas rapidamente, então você pode paginar no cliente.
fonte