CodexBloom - Programming Q&A Platform

C# - Performance Issues with Entity Framework Core and Large Data Set Paging

πŸ‘€ Views: 49 πŸ’¬ Answers: 1 πŸ“… Created: 2025-06-14
entity-framework-core performance pagination aspnet-core C#

I'm converting an old project and I'm optimizing some code but I'm currently facing significant performance issues when trying to paginate over a large dataset in an ASP.NET Core application that uses Entity Framework Core 6. The dataset contains over a million records, and when I attempt to fetch results using the `Skip()` and `Take()` methods for pagination, the response time is noticeably sluggish, often taking several seconds to load the first page. I have implemented the following query: ```csharp var pageSize = 10; var pageNumber = 1; // This would come from a request parameter var results = await _context.MyEntities .OrderBy(x => x.Id) .Skip((pageNumber - 1) * pageSize) .Take(pageSize) .ToListAsync(); ``` While this retrieves the correct amount of data, the execution time seems excessive. I have also indexed the `Id` column in the database, but it doesn't appear to make a noticeable difference. I’ve tried optimizing the database by examining execution plans and adding additional indexes, but I'm still seeing poor performance. Additionally, I've looked into using `AsNoTracking()` for read-only queries but didn't notice any improvements. When I run SQL directly on the database, the query executes in under a second, so it seems to be an issue with how Entity Framework is processing the request. I also checked the EF Core logging and noticed that it’s generating the SQL correctly, but the execution time is still slow. What could I be missing or what best practices can I adopt to improve the performance for paging large datasets in EF Core? Has anyone else encountered this? I'm working in a Linux environment. What am I doing wrong?