Efficient Pagination with Skip/Take

Efficient pagination using OFFSET-FETCH on SQL Server.

Execution Time

12 ms

Page Size

25

Current Page

360 / 978

Total Records

24441

Items per page: 25 50 100 200

Page 360 Results Showing 8976 - 9000 of 24441

ID Name Category Price Stock Rating Reviews SKU
9535 Bulk Product d408d893 Sports & Outdoors $37.37 185 3.9 45 BULK-d12a9cf4
9536 Bulk Product cf3d0c7e Sports & Outdoors $513.82 250 3.5 37 BULK-91203bfb
9537 Bulk Product 5f64cee3 Clothing $240.40 430 1.2 17 BULK-ccad1dd0
9538 Bulk Product 4e4c3875 Toys & Games $322.48 219 4.6 33 BULK-78a82bfa
9539 Bulk Product 83289371 Toys & Games $992.38 295 1.9 27 BULK-fada6281
9540 Bulk Product ef29588e Sports & Outdoors $41.05 374 2.6 25 BULK-28dc0d9f
9541 Bulk Product f324c6cf Home & Garden $544.03 99 1.0 51 BULK-f49751a5
9542 Bulk Product 4689f975 Books $122.54 76 2.9 69 BULK-544203af
9543 Bulk Product 12c06e03 Toys & Games $70.32 6 2.9 15 BULK-b1b58529
9544 Bulk Product 28f35626 Clothing $715.94 200 2.0 27 BULK-ac6ac2a6
9545 Bulk Product c5e5e796 Electronics $244.94 234 3.8 17 BULK-90144b30
9546 Bulk Product e9ca0fbf Toys & Games $511.99 313 0.5 38 BULK-90be0f5b
9547 Bulk Product 3a218c69 Sports & Outdoors $88.02 224 2.9 82 BULK-473544ce
9548 Bulk Product e7445a4b Books $550.24 125 1.3 97 BULK-def9a83b
9549 Bulk Product 35087bda Toys & Games $651.08 212 4.1 89 BULK-72eea28b
9550 Bulk Product 26d8aa90 Clothing $289.51 285 2.7 47 BULK-ac39c7b9
9551 Bulk Product f2ed0eb8 Home & Garden $951.84 124 1.5 65 BULK-2136c8e9
9552 Bulk Product b54d8c9a Sports & Outdoors $16.09 428 4.7 40 BULK-131f2096
9553 Bulk Product 6f0297d0 Sports & Outdoors $559.22 430 4.1 64 BULK-6afc468b
9554 Bulk Product fc683abb Home & Garden $73.75 201 3.5 32 BULK-662b081e
9555 Bulk Product 3578cfb7 Home & Garden $985.62 170 0.1 87 BULK-c42f4148
9556 Bulk Product 103eb758 Toys & Games $545.38 415 4.2 19 BULK-50a619ee
9557 Bulk Product 79dd15c3 Books $476.25 165 4.5 62 BULK-c7a6e166
9558 Bulk Product f1f991dd Home & Garden $827.93 291 0.1 38 BULK-39fb5c8b
9559 Bulk Product 648d1281 Toys & Games $662.64 39 1.9 18 BULK-c5332d4f
Implementation Code
// Efficient pagination with Skip and Take
public async Task<PaginatedResult<DemoProduct>> GetPaginatedProductsAsync(int page, int pageSize)
{
    // Get total count (cached if possible)
    var totalCount = await _context.DemoProducts.CountAsync(p => p.IsActive);
    
    // Get page of results
    var items = await _context.DemoProducts
        .Where(p => p.IsActive)
        .OrderBy(p => p.Id) // Important: Must have ORDER BY for consistent paging
        .Skip((page - 1) * pageSize) // OFFSET in SQL
        .Take(pageSize) // FETCH NEXT in SQL
        .AsNoTracking() // No tracking needed for read-only
        .ToListAsync();

    return new PaginatedResult<DemoProduct>
    {
        Items = items,
        TotalCount = totalCount,
        Page = page,
        PageSize = pageSize
    };
}
Pagination Best Practices
  • Always use OrderBy: Skip/Take require stable sorting for consistent results
  • Use AsNoTracking(): Pagination queries are typically read-only
  • Consider caching: Cache total count if dataset changes infrequently
  • Limit max page size: Prevent users from requesting too many records at once
  • Use indexed columns: Ensure ORDER BY columns are indexed for performance