Я использую класс PagedList в своем веб-приложении, с которым многие из вас могут быть знакомы, если вы что-то делали с ASP.NET MVC и LINQ to SQL. Об этом писал в блоге Роб Конери и подобное воплощение было включено в такие вещи, как Nerd Dinner и т. д. Это отлично работает, но мой Администратор базы данных выразил обеспокоенность по поводу потенциальных проблем с производительностью в будущем.
Его проблема связана с SELECT COUNT (*), который выдается в результате этой строки:
TotalCount = source.Count();
Любое действие с выгруженными данными вызовет дополнительный запрос (как показано ниже) в результате вызова метода IQueryable.Count ():
SELECT COUNT(*) AS [value] FROM [dbo].[Products] AS [t0]
Есть ли лучший способ справиться с этим? Я рассматривал возможность использования свойства Count класса PagedList для получения количества элементов, но понял, что это не сработает, потому что он подсчитывает только количество элементов, отображаемых в данный момент (а не общее количество).
Насколько сильно снизится производительность моего приложения при большом количестве данных в базе данных?