Efficient Pagination with Skip/Take

Efficient pagination using OFFSET-FETCH on SQL Server.

Execution Time

21 ms

Page Size

25

Current Page

242 / 978

Total Records

24441

Items per page: 25 50 100 200

Page 242 Results Showing 6026 - 6050 of 24441

ID Name Category Price Stock Rating Reviews SKU
6585 Bulk Product c43a1347 Sports & Outdoors $179.71 77 3.3 40 BULK-1957c50f
6586 Bulk Product a1d8a174 Electronics $330.49 275 3.3 28 BULK-487a70b4
6587 Bulk Product 0b7c0c01 Electronics $92.29 241 0.4 51 BULK-ad473414
6588 Bulk Product 19246902 Electronics $736.73 480 1.7 54 BULK-9c0ed30f
6589 Bulk Product d173e8b7 Books $481.97 98 1.9 15 BULK-a2eabb18
6590 Bulk Product 5d5d561f Toys & Games $128.34 403 0.1 4 BULK-9a762117
6591 Bulk Product 4b124b90 Clothing $485.73 210 0.6 83 BULK-bf632124
6592 Bulk Product c24d2071 Books $486.71 173 4.3 6 BULK-a55c08a5
6593 Bulk Product 01539a67 Toys & Games $486.38 224 5.0 13 BULK-48dd90ba
6594 Bulk Product 14bddede Sports & Outdoors $414.64 5 0.2 36 BULK-37db3cb6
6595 Bulk Product 1280336f Toys & Games $802.00 385 1.2 88 BULK-20091b15
6596 Bulk Product b217fac6 Clothing $950.19 87 4.3 48 BULK-4059af69
6597 Bulk Product daef2677 Home & Garden $371.19 235 0.8 47 BULK-531d8bbd
6598 Bulk Product 166996f0 Home & Garden $125.65 304 4.6 52 BULK-41ecd72b
6599 Bulk Product 1857412a Home & Garden $860.35 300 1.2 26 BULK-bc7b1a33
6600 Bulk Product 92bbd9b6 Electronics $182.55 17 4.9 47 BULK-b6631d93
6601 Bulk Product 7b8035b8 Home & Garden $381.15 494 3.2 10 BULK-e178e6c3
6602 Bulk Product 6d3a8201 Home & Garden $454.58 408 4.4 98 BULK-77b2bce6
6603 Bulk Product 79c9956f Home & Garden $466.56 33 1.8 48 BULK-5855ce66
6604 Bulk Product d540e431 Sports & Outdoors $874.01 236 3.5 96 BULK-8f65e28c
6605 Bulk Product 0a33f4ce Books $495.86 375 1.7 97 BULK-ad483b1c
6606 Bulk Product f7135630 Books $635.99 164 4.5 42 BULK-a99551b2
6607 Bulk Product dd1b8154 Sports & Outdoors $145.83 415 3.2 37 BULK-3f6c289f
6608 Bulk Product b712c208 Sports & Outdoors $903.51 367 3.9 91 BULK-b661998c
6609 Bulk Product 3930fab0 Clothing $118.20 81 2.6 69 BULK-5a112c1b
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