Efficient Pagination with Skip/Take

Efficient pagination using OFFSET-FETCH on SQL Server.

Execution Time

29 ms

Page Size

25

Current Page

678 / 978

Total Records

24441

Items per page: 25 50 100 200

Page 678 Results Showing 16926 - 16950 of 24441

ID Name Category Price Stock Rating Reviews SKU
17485 Bulk Product 7300098f Electronics $364.90 68 2.3 96 BULK-ee3dbd18
17486 Bulk Product c731398e Books $405.47 429 1.7 82 BULK-d3f19a6d
17487 Bulk Product 3aea498a Books $907.50 197 3.0 6 BULK-3c33a76b
17488 Bulk Product b75c1919 Clothing $321.36 59 0.6 30 BULK-0d3b0743
17489 Bulk Product 71984174 Home & Garden $880.26 161 3.0 27 BULK-b32d0c6c
17490 Bulk Product 88d9adb9 Toys & Games $837.37 76 0.3 62 BULK-afb601db
17491 Bulk Product 6bddc5c0 Electronics $957.33 26 2.4 4 BULK-875e2722
17492 Bulk Product 6dc71c0f Home & Garden $550.24 147 0.8 69 BULK-dff43694
17493 Bulk Product a73348ff Electronics $100.51 206 4.0 69 BULK-dfaf06e9
17494 Bulk Product c29836d5 Sports & Outdoors $430.78 189 2.3 10 BULK-5da7f505
17495 Bulk Product 65bf4c78 Electronics $659.99 479 0.4 80 BULK-59ae8a85
17496 Bulk Product b4c72b10 Toys & Games $780.68 157 4.2 57 BULK-124b6adb
17497 Bulk Product 0221b517 Sports & Outdoors $182.23 418 1.2 69 BULK-374cf208
17498 Bulk Product 4cacb70a Books $165.61 482 1.0 38 BULK-6738b47d
17499 Bulk Product bac30974 Books $294.57 429 1.8 86 BULK-f3e61100
17500 Bulk Product d65288bd Books $495.28 74 3.6 65 BULK-56334095
17501 Bulk Product 9abece18 Toys & Games $604.90 368 2.2 57 BULK-1b85298a
17502 Bulk Product fd3be77c Home & Garden $303.05 341 4.9 33 BULK-d3f6dd21
17503 Bulk Product fd89de0b Home & Garden $525.27 52 0.6 9 BULK-0c0e6ef9
17504 Bulk Product 6d5aa145 Clothing $676.44 391 4.0 67 BULK-b672693f
17505 Bulk Product 69cb44da Sports & Outdoors $499.76 484 4.3 70 BULK-22904f42
17506 Bulk Product 4473ac62 Home & Garden $527.15 313 1.4 50 BULK-921c2c61
17507 Bulk Product 966d7f33 Sports & Outdoors $917.96 481 3.2 29 BULK-55366f1b
17508 Bulk Product 02c71c39 Books $988.77 303 1.2 29 BULK-d6264eab
17509 Bulk Product c16659ca Sports & Outdoors $878.29 27 0.3 31 BULK-b7f06082
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