Efficient Pagination with Skip/Take

Efficient pagination using OFFSET-FETCH on SQL Server.

Execution Time

18 ms

Page Size

25

Current Page

437 / 978

Total Records

24441

Items per page: 25 50 100 200

Page 437 Results Showing 10901 - 10925 of 24441

ID Name Category Price Stock Rating Reviews SKU
11460 Bulk Product 725d3f0e Books $884.60 237 1.5 23 BULK-3fdcf450
11461 Bulk Product 3ec2c6c3 Sports & Outdoors $178.99 237 2.6 25 BULK-1b95862a
11462 Bulk Product 7b70578d Clothing $627.44 466 4.9 28 BULK-3c0a10e5
11463 Bulk Product f76179f8 Electronics $108.29 384 3.5 58 BULK-c8cb7cc3
11464 Bulk Product afedda90 Sports & Outdoors $125.04 413 3.0 30 BULK-8313a55e
11465 Bulk Product e445371b Toys & Games $148.42 491 1.5 29 BULK-cbd6fec7
11466 Bulk Product 4fd1a0cd Home & Garden $344.35 281 3.3 68 BULK-4524721e
11467 Bulk Product 2b298545 Sports & Outdoors $305.25 126 4.0 33 BULK-dc7e6ade
11468 Bulk Product 2d0a030b Clothing $197.40 307 0.3 53 BULK-94a097f9
11469 Bulk Product 3fd1eeca Electronics $793.47 64 3.9 98 BULK-00bc1048
11470 Bulk Product d03dea33 Home & Garden $952.96 179 4.5 29 BULK-10a6d84b
11471 Bulk Product 7610e27e Books $538.29 309 2.3 9 BULK-5d28663b
11472 Bulk Product 600e003d Toys & Games $167.18 105 1.5 0 BULK-49a1a079
11473 Bulk Product 90b52840 Electronics $809.50 110 1.5 48 BULK-d923bbf9
11474 Bulk Product c1e27d6f Books $774.91 411 0.6 50 BULK-7348941b
11475 Bulk Product 6b59f92b Sports & Outdoors $411.80 424 2.9 42 BULK-5e88abaf
11476 Bulk Product e884e6f8 Books $348.03 9 1.8 3 BULK-1f2b35b1
11477 Bulk Product 4c38d24c Clothing $271.43 254 3.6 35 BULK-04c84dcf
11478 Bulk Product 5c48cadf Books $732.63 292 3.4 71 BULK-5c1bd583
11479 Bulk Product 779c37bd Toys & Games $259.54 21 2.0 46 BULK-7d7908c7
11480 Bulk Product ab61d168 Sports & Outdoors $708.26 438 3.8 9 BULK-d133ea69
11481 Bulk Product 28a0bb45 Electronics $388.36 83 2.1 34 BULK-4eeb168e
11482 Bulk Product d47c8b64 Sports & Outdoors $797.41 96 4.8 8 BULK-da8d9fac
11483 Bulk Product e5e4bc68 Toys & Games $643.94 62 3.7 55 BULK-df42e12f
11484 Bulk Product d06d5bc2 Home & Garden $113.94 75 3.3 61 BULK-5b61797e
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