Używam klasy PagedList w mojej aplikacji sieciowej, którą wielu z was może znać, jeśli robiliście coś z ASP.NET MVC i LINQ do SQL. Zostało ono napisane na blogu przez Rob Conery, a podobne wcielenie zawierało się w takich rzeczach jak Nerd Dinner itp. Działa to świetnie, ale mój DBA wzbudził obawy o potencjalne przyszłe problemy z wydajnością.LINQ do SQL Pagination i COUNT (*)
Jego problemem jest wokół select count (*), która zostanie wydane w wyniku tej linii:
TotalCount = source.Count();
Każda akcja, która wywoływana dane wystrzelić dodatkowe zapytania (jak poniżej) w wyniku Wywołania metody IQueryable.Count():
SELECT COUNT(*) AS [value] FROM [dbo].[Products] AS [t0]
Czy istnieje lepszy sposób radzenia sobie z tym? Rozważałem użycie właściwości Count klasy PagedList, aby uzyskać licznik elementów, ale zdałem sobie sprawę, że to nie zadziała, ponieważ liczy się tylko liczba aktualnie wyświetlanych elementów (nie całkowita liczba).
Ile trafienia wydajności spowoduje to moją aplikację, gdy w bazie danych jest dużo danych?
Upvoted tak mocno, że złamał internet. ;) Jeśli dodatkowe kwerendy będzie przynieść wydajność bazy danych masz kilka poważnych problemów. – jfar