Efficient Pagination with Skip/Take

Efficient pagination using OFFSET-FETCH on SQL Server.

Execution Time

13 ms

Page Size

25

Current Page

572 / 978

Total Records

24441

Items per page: 25 50 100 200

Page 572 Results Showing 14276 - 14300 of 24441

ID Name Category Price Stock Rating Reviews SKU
14835 Bulk Product 872b7d35 Toys & Games $459.14 174 0.3 41 BULK-79ffe440
14836 Bulk Product 21160560 Home & Garden $297.43 495 0.5 97 BULK-d0d347fb
14837 Bulk Product d088eba3 Books $212.17 298 4.6 43 BULK-b908cb20
14838 Bulk Product ca4ee707 Sports & Outdoors $1,006.89 306 0.6 22 BULK-18d67461
14839 Bulk Product bcf79299 Home & Garden $122.78 23 0.8 7 BULK-45526c14
14840 Bulk Product 9bce34dc Electronics $355.34 317 3.1 88 BULK-3d312ecc
14841 Bulk Product 378d79ae Sports & Outdoors $11.59 197 0.9 89 BULK-b55861e2
14842 Bulk Product d24905d5 Clothing $519.67 476 3.4 48 BULK-abdace48
14843 Bulk Product 03d18ac0 Books $19.38 126 0.5 26 BULK-2a8afbea
14844 Bulk Product 5f46789b Toys & Games $56.44 153 2.8 12 BULK-c0276142
14845 Bulk Product 033e170f Toys & Games $105.55 388 1.6 72 BULK-30c7ee01
14846 Bulk Product f5d62da0 Toys & Games $650.58 351 1.1 7 BULK-2ed45897
14847 Bulk Product 6dba402b Sports & Outdoors $853.31 332 0.2 79 BULK-9357972e
14848 Bulk Product 44ede181 Books $903.79 216 1.4 8 BULK-242e810a
14849 Bulk Product 4a2b072d Electronics $330.89 207 0.6 37 BULK-2504cbb6
14850 Bulk Product 50875952 Sports & Outdoors $741.64 51 0.7 12 BULK-0d6bb561
14851 Bulk Product 1b370ade Sports & Outdoors $570.59 316 3.2 45 BULK-f01785dc
14852 Bulk Product 9edf374c Books $314.64 277 1.7 72 BULK-8157ac65
14853 Bulk Product 2ab366bd Clothing $746.80 282 4.2 25 BULK-7866f5be
14854 Bulk Product 60f898f6 Home & Garden $970.47 261 1.1 54 BULK-100a4ce0
14855 Bulk Product 1ee6a5ad Home & Garden $821.53 59 1.4 64 BULK-4bde42c8
14856 Bulk Product 3ec79abb Toys & Games $794.93 246 5.0 78 BULK-aa9c2257
14857 Bulk Product 7af9ebdf Home & Garden $265.40 191 4.3 81 BULK-33ee70a6
14858 Bulk Product 996b2334 Books $532.61 335 4.9 79 BULK-9b421470
14859 Bulk Product 24c41142 Clothing $819.46 5 2.9 29 BULK-9d926f80
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