Efficient Pagination with Skip/Take

Efficient pagination using OFFSET-FETCH on SQL Server.

Execution Time

50 ms

Page Size

25

Current Page

540 / 978

Total Records

24441

Items per page: 25 50 100 200

Page 540 Results Showing 13476 - 13500 of 24441

ID Name Category Price Stock Rating Reviews SKU
14035 Bulk Product 761ad82b Clothing $224.18 418 4.3 54 BULK-43466547
14036 Bulk Product 106265b4 Toys & Games $225.58 214 4.1 24 BULK-00219f4c
14037 Bulk Product 372f11b1 Clothing $508.00 433 0.2 39 BULK-c4ef8ad6
14038 Bulk Product e4b88578 Electronics $627.81 198 0.6 84 BULK-70a96bfd
14039 Bulk Product f2645002 Sports & Outdoors $353.08 248 4.0 39 BULK-074ca4c1
14040 Bulk Product 63ae6d2e Home & Garden $711.95 53 1.7 2 BULK-b4666d5d
14041 Bulk Product 1f2c72a8 Sports & Outdoors $989.77 103 3.2 14 BULK-3c0112a1
14042 Bulk Product 91d65e2a Clothing $916.40 394 0.7 21 BULK-6b0db453
14043 Bulk Product 59274c32 Books $325.41 33 1.5 16 BULK-6ffe24eb
14044 Bulk Product 34631483 Electronics $795.94 12 0.9 47 BULK-7835e969
14045 Bulk Product 1b675b1a Home & Garden $171.03 222 3.4 6 BULK-ebd12fdf
14046 Bulk Product 71edd675 Home & Garden $297.19 20 4.6 53 BULK-ce6f2573
14047 Bulk Product 2ca24dee Home & Garden $729.22 113 4.2 11 BULK-92b288ae
14048 Bulk Product ed91d262 Sports & Outdoors $528.44 8 4.3 7 BULK-4add9f27
14049 Bulk Product 2dd44c0c Sports & Outdoors $394.20 38 0.4 52 BULK-72a7409e
14050 Bulk Product 60b2f6be Toys & Games $841.92 35 0.6 70 BULK-58f3ab15
14051 Bulk Product fb847f3f Electronics $718.73 208 2.0 28 BULK-2b3e8715
14052 Bulk Product b34d3daa Sports & Outdoors $709.15 123 3.9 9 BULK-3831f211
14053 Bulk Product 597298aa Toys & Games $694.89 241 4.5 57 BULK-c9333208
14054 Bulk Product fd806221 Electronics $210.66 457 1.4 35 BULK-b02a2cb2
14055 Bulk Product ed187017 Toys & Games $859.59 30 1.1 47 BULK-dc749480
14056 Bulk Product fd97e8d4 Home & Garden $526.35 280 1.8 28 BULK-340d0c1e
14057 Bulk Product d0fd68bb Electronics $872.26 162 3.9 60 BULK-66ef3360
14058 Bulk Product 2c901286 Books $252.49 226 2.8 87 BULK-8a2f0cd4
14059 Bulk Product 62f11862 Toys & Games $565.11 289 3.9 21 BULK-ccfe5739
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