J'ai une requête de base de données qui pourrait entraîner un grand ensemble de résultats. Le client qui affiche les données reçoit les données sur le réseau, donc l'idée était de minimiser la quantité de données transférées en récupérant uniquement les 50 premiers résultats de la base de données et en les envoyant au client. Ensuite, je fournirai la possibilité de passer à la deuxième page pour récupérer les 50 prochains résultats, etc. (quelque chose de similaire, par exemple, ce que Google propose)
La question est de savoir quel est le moyen efficace de mettre en œuvre la pagination. Je veux m'assurer que mssql utilise autant que possible le cache et que le même n'est pas exécuté à nouveau à chaque fois que je change la pagination.
Il y a plus de clients qui interrogent la base de données en même temps. Moteur sql utilisé: MS SQL 2005
Mes idées étaient:
- Utilisez un état SQL préparé pour assurer le partage du plan d'exécution
- utiliser la variable ROW_COUNT pour récupérer uniquement les lignes nécessaires
Mais est-ce vraiment le moyen le plus efficace? Ou pensez-vous qu'il serait préférable de récupérer l'ensemble des résultats et d'implémenter la pagination dans le code qui envoie les données au client?
Merci pour vos conseils!
Cordialement, Tomas