Efficient Pagination with Skip/Take

Efficient pagination using OFFSET-FETCH on SQL Server.

Execution Time

19 ms

Page Size

25

Current Page

559 / 978

Total Records

24441

Items per page: 25 50 100 200

Page 559 Results Showing 13951 - 13975 of 24441

ID Name Category Price Stock Rating Reviews SKU
14510 Bulk Product 7e302217 Clothing $396.22 24 2.7 79 BULK-d5effd4a
14511 Bulk Product 744111e2 Toys & Games $732.34 217 0.7 61 BULK-6a7ac5de
14512 Bulk Product 460f810c Toys & Games $714.01 173 3.8 5 BULK-59a41e18
14513 Bulk Product 9134609c Toys & Games $225.49 11 4.2 2 BULK-5747fb43
14514 Bulk Product 1320096a Electronics $104.79 118 0.8 77 BULK-c2fd1335
14515 Bulk Product 7abd92c0 Sports & Outdoors $272.07 217 2.2 28 BULK-713093f5
14516 Bulk Product d7833b25 Books $974.62 464 3.8 56 BULK-09846315
14517 Bulk Product 65b59d55 Sports & Outdoors $686.49 493 0.8 3 BULK-450cfd2b
14518 Bulk Product d70cd731 Home & Garden $790.35 43 3.3 40 BULK-09d10c59
14519 Bulk Product fa89d8a9 Sports & Outdoors $861.83 268 0.9 35 BULK-71dcef9b
14520 Bulk Product cf371c76 Sports & Outdoors $99.11 181 1.2 87 BULK-8514f939
14521 Bulk Product 7ba84cd2 Sports & Outdoors $411.48 329 4.4 18 BULK-c5add64c
14522 Bulk Product d89fc33e Home & Garden $305.29 194 0.8 41 BULK-27e68280
14523 Bulk Product ae8142ac Books $535.07 83 3.2 24 BULK-74a20d7f
14524 Bulk Product 991837ca Toys & Games $859.23 39 4.3 34 BULK-03d22e22
14525 Bulk Product 580b17cd Clothing $500.86 3 1.5 5 BULK-e70626f5
14526 Bulk Product 1e265df1 Toys & Games $422.98 167 2.7 65 BULK-16ec72ae
14527 Bulk Product d3ab2c14 Home & Garden $427.64 469 5.0 80 BULK-9e21c26b
14528 Bulk Product a212c123 Home & Garden $585.62 121 1.0 9 BULK-f3837e66
14529 Bulk Product 969e60a8 Books $477.76 306 3.0 63 BULK-8eec41fa
14530 Bulk Product 1b8a6a15 Home & Garden $626.79 252 3.6 2 BULK-2a6a3bd6
14531 Bulk Product 7ddc10df Electronics $894.58 87 3.5 21 BULK-fcf016a6
14532 Bulk Product 99e36f57 Toys & Games $303.36 102 0.2 17 BULK-b20b4bce
14533 Bulk Product f103f05c Books $545.09 137 0.5 37 BULK-c253d495
14534 Bulk Product 7de07587 Clothing $632.25 175 2.7 18 BULK-4dcf7bac
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