1 votes

Quelle est la meilleure méthode pour utiliser la pagination avec la performance de la grille de données ?

Sur un site comptant un grand nombre d'utilisateurs, la pagination doit-elle être gérée dans le code ou à l'aide d'une procédure stockée ? Si vous avez utilisé la mise en cache, veuillez indiquer les facteurs de réussite.

3voto

Mehrdad Afshari Points 204872

Personnellement, je ne page jamais de choses en dehors de SQL Server. Je le fais au niveau de la base de données, car si vous avez un million d'enregistrements à paginer, si vous les récupérez dans la couche application et que vous les paginez à ce niveau, vous payez déjà des frais de mise en page. énorme coût.

3voto

RedFilter Points 84190

Dans 99,9 % des cas, la pagination doit être effectuée sur le serveur de base de données. Toutefois, les procédures stockées ne sont pas tenues de le faire et, en fait, de nombreuses solutions de procédures stockées s'appuient sur des curseurs et sont assez inefficaces. L'idéal est d'utiliser une seule instruction SQL adaptée à votre plate-forme de base de données pour récupérer uniquement les enregistrements dont vous avez besoin, et pas plus.

2voto

netadictos Points 4988

Je le ferais au niveau de la base de données. En ce qui concerne le serveur SQL 2005, j'utiliserais la nouvelle fonction ROW_NUMBER(), voir : http://stackoverflow.com/questions/2840/paging-sql-server-2005-results

Où se trouverait un sql typique :

SELECT Row_Number() OVER(ORDER BY UserName) As RowID, UserFirstName, UserLastName
FROM Users
WHERE RowID Between 0 AND 9

Ici http://aspnet.4guysfromrolla.com/articles/031506-1.aspx vous pouvez voir comment cela fonctionne et examiner une petite référence de Scott Mitchell.

1voto

Marc Gravell Points 482669

La plupart des fournisseurs de bases de données offrent un support de pagination riche au niveau de la base de données. Utilisez-le ;-p Notez qu'il n'est pas nécessaire d'utiliser une procédure stockée pour faire cela (je vais mettre de côté le débat éternel entre la procédure stockée et la commande ad-hoc).

Par ailleurs, de nombreux cadres de travail également le fait pour vous de manière efficace. Par exemple, dans .NET 3.5 (avec LINQ), vous pouvez utiliser Skip() y Take() pour faire de la pagination qui est utilisée à la base de données.

0voto

mcaaltuntas Points 2573

Je pense que Cela dépend sur le nombre d'enregistrements à paginer. Par exemple, si vous avez 100 enregistrements à paginer, je pense qu'il n'est pas nécessaire d'utiliser la fonction de pagination de SQL pour faire cela. J'essaie toujours de garder à l'esprit le principe KISS et l'optimisation prématurée.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X