Efficient Pagination with Skip/Take

Efficient pagination using OFFSET-FETCH on SQL Server.

Execution Time

27 ms

Page Size

25

Current Page

310 / 978

Total Records

24441

Items per page: 25 50 100 200

Page 310 Results Showing 7726 - 7750 of 24441

ID Name Category Price Stock Rating Reviews SKU
8285 Bulk Product 05e01775 Toys & Games $94.66 28 0.0 56 BULK-f15b0691
8286 Bulk Product 5264bdaf Toys & Games $387.02 99 4.8 1 BULK-42847790
8287 Bulk Product f1e7d80d Books $785.36 178 3.7 19 BULK-ae0b3d15
8288 Bulk Product 7d09d413 Electronics $973.70 114 1.7 80 BULK-ddd1c495
8289 Bulk Product 5b95d309 Sports & Outdoors $411.59 325 3.0 22 BULK-d8115481
8290 Bulk Product 354b3a8c Books $381.79 436 2.1 6 BULK-128ca499
8291 Bulk Product f265ec67 Electronics $349.94 2 5.0 38 BULK-2547ae38
8292 Bulk Product 0140433a Home & Garden $345.82 58 0.2 72 BULK-1ab40de4
8293 Bulk Product 5f1f5aa9 Sports & Outdoors $692.86 190 0.6 4 BULK-01252486
8294 Bulk Product 004e2066 Sports & Outdoors $106.02 62 2.2 37 BULK-8bf7c763
8295 Bulk Product db2f88cf Clothing $184.46 3 1.5 44 BULK-0fc8841c
8296 Bulk Product 3926d83b Books $225.76 139 0.1 92 BULK-319065db
8297 Bulk Product 626a4278 Electronics $629.13 169 2.1 0 BULK-ce3b35df
8298 Bulk Product d3cd87a6 Sports & Outdoors $19.53 128 0.1 7 BULK-7271fd0b
8299 Bulk Product bcc8a68d Sports & Outdoors $417.91 334 0.0 15 BULK-16043fb1
8300 Bulk Product d103e30c Sports & Outdoors $29.88 461 2.9 33 BULK-6ec38b6c
8301 Bulk Product 8f7ce973 Toys & Games $74.68 400 4.0 4 BULK-6c1c5f7e
8302 Bulk Product 3f63cfea Sports & Outdoors $326.44 198 0.7 21 BULK-d636c989
8303 Bulk Product 1104aa17 Electronics $692.60 377 0.2 33 BULK-a9403d1d
8304 Bulk Product 8b12e769 Electronics $178.64 205 0.8 29 BULK-24dca842
8305 Bulk Product e218dcf0 Home & Garden $1,001.92 164 3.8 29 BULK-78ce1e19
8306 Bulk Product 7b4b15f4 Sports & Outdoors $415.34 346 1.4 11 BULK-2b584a6b
8307 Bulk Product 008fe4b7 Sports & Outdoors $659.82 215 3.2 65 BULK-215a9dd9
8308 Bulk Product 2e8b5959 Sports & Outdoors $791.12 201 0.9 72 BULK-97f8253a
8309 Bulk Product f9a6a868 Home & Garden $580.55 345 4.0 73 BULK-9c3efd15
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