J'utilise la classe PagedList dans mon application Web que beaucoup d'entre vous connaissent peut-être si vous avez fait quelque chose avec ASP.NET MVC et LINQ to SQL. Il a été blogué par Rob Conery, et une incarnation similaire a été inclus dans des choses comme Nerd Dinner, etc Cela fonctionne très bien, mais mon DBA a soulevé des préoccupations sur les futurs problèmes de performance potentiels.Pagination LINQ to SQL et COUNT (*)
Sa question est autour du SELECT COUNT (*) qui obtient émis à la suite de cette ligne:
TotalCount = source.Count();
Toute action qui a paginée données déclencher une requête supplémentaire (comme ci-dessous) à la suite de l'appel de méthode IQueryable.Count():
SELECT COUNT(*) AS [value] FROM [dbo].[Products] AS [t0]
y at-il une meilleure façon de gérer cette situation? J'ai envisagé d'utiliser la propriété Count de la classe PagedList pour obtenir le nombre d'éléments, mais je me suis rendu compte que cela ne fonctionnerait pas car il ne compte que le nombre d'éléments actuellement affichés (pas le nombre total).
Quelle sera l'incidence sur les performances de cette application lorsque la base de données contient beaucoup de données?
upvoted si dur je me suis cassé l'Internet. ;) Si une requête de comptage supplémentaire va réduire les performances de votre base de données, vous avez de sérieux problèmes. – jfar