Efficient Pagination with Skip/Take

Efficient pagination using OFFSET-FETCH on SQL Server.

Execution Time

17 ms

Page Size

25

Current Page

371 / 978

Total Records

24441

Items per page: 25 50 100 200

Page 371 Results Showing 9251 - 9275 of 24441

ID Name Category Price Stock Rating Reviews SKU
9810 Bulk Product 309ccdb6 Home & Garden $574.17 139 2.0 9 BULK-9e517123
9811 Bulk Product d6803205 Books $658.88 177 4.9 15 BULK-32223430
9812 Bulk Product 1c60c30d Clothing $584.57 348 1.6 13 BULK-b5cbc623
9813 Bulk Product 543be492 Sports & Outdoors $471.45 220 3.8 63 BULK-6e1ba108
9814 Bulk Product 74095564 Electronics $849.69 280 1.7 37 BULK-5c4c6287
9815 Bulk Product 4715d77f Books $341.16 186 2.9 39 BULK-914f07f9
9816 Bulk Product 8be6a04c Sports & Outdoors $954.84 460 2.2 84 BULK-d7bcea83
9817 Bulk Product dee77662 Books $153.39 201 0.1 58 BULK-9aa95447
9818 Bulk Product d5e92594 Toys & Games $467.89 132 0.6 99 BULK-d5d4c2cf
9819 Bulk Product 5dd0bf2d Toys & Games $778.95 241 1.1 66 BULK-c1471964
9820 Bulk Product e457823b Books $1,000.40 326 2.9 83 BULK-1a8ddcd3
9821 Bulk Product 501c67f6 Home & Garden $632.17 130 4.5 89 BULK-1c80bb08
9822 Bulk Product b3327baf Books $766.88 247 3.6 25 BULK-267679ec
9823 Bulk Product f12a6945 Sports & Outdoors $551.15 335 1.9 21 BULK-70c2731f
9824 Bulk Product 83fc89bb Sports & Outdoors $494.59 107 1.5 7 BULK-7cacec7f
9825 Bulk Product b00f642e Home & Garden $962.49 204 0.6 27 BULK-3a63c5b3
9826 Bulk Product 84594225 Books $872.50 134 2.6 17 BULK-c5aafb0a
9827 Bulk Product b05b624d Sports & Outdoors $26.74 205 3.3 72 BULK-d4f5e2dd
9828 Bulk Product 23abfc33 Books $206.93 442 0.9 21 BULK-568fa421
9829 Bulk Product 9f435e47 Books $619.43 134 3.5 80 BULK-fc30d034
9830 Bulk Product 4a3bf648 Sports & Outdoors $937.51 109 3.1 21 BULK-dd9b2aff
9831 Bulk Product f93e6420 Home & Garden $149.01 162 0.5 41 BULK-2ad7d869
9832 Bulk Product 33ad1151 Electronics $962.04 423 1.1 90 BULK-74d3172d
9833 Bulk Product 1e1082df Books $803.96 236 4.0 10 BULK-f01e48c3
9834 Bulk Product 2953b63a Sports & Outdoors $354.19 26 3.7 62 BULK-50ab2ae0
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