Efficient Pagination with Skip/Take

Efficient pagination using OFFSET-FETCH on SQL Server.

Execution Time

13 ms

Page Size

25

Current Page

15 / 978

Total Records

24441

Items per page: 25 50 100 200

Page 15 Results Showing 351 - 375 of 24441

ID Name Category Price Stock Rating Reviews SKU
387 Pro Toys & Games Product 2024 Toys & Games $483.63 115 3.2 861 SKU-000387
388 Standard Books Product Lite Books $48.48 234 2.4 502 SKU-000388
389 Elite Automotive Product 2024 Automotive $197.91 44 2.0 254 SKU-000389
390 Standard Toys & Games Product Lite Toys & Games $42.37 446 3.7 310 SKU-000390
391 Premium Home & Garden Product Lite Home & Garden $339.48 29 2.7 787 SKU-000391
392 Elite Books Product Plus Books $890.43 246 1.2 382 SKU-000392
393 Ultra Books Product Max Books $111.91 486 3.3 996 SKU-000393
394 Pro Books Product Lite Books $325.41 32 2.6 730 SKU-000394
395 Deluxe Office Supplies Product Pro Office Supplies $714.44 153 3.3 47 SKU-000395
399 Premium Toys & Games Product Mini Toys & Games $856.60 440 2.0 570 SKU-000399
400 Deluxe Home & Garden Product Advanced Home & Garden $68.22 366 3.0 416 SKU-000400
401 Premium Food & Grocery Product Pro Food & Grocery $467.15 323 3.9 396 SKU-000401
402 Professional Food & Grocery Product Max Food & Grocery $510.05 143 2.0 211 SKU-000402
403 Deluxe Health & Beauty Product Pro Health & Beauty $691.46 110 1.9 526 SKU-000403
404 Premium Office Supplies Product Advanced Office Supplies $277.60 8 3.9 423 SKU-000404
405 Premium Food & Grocery Product Plus Food & Grocery $886.83 379 4.1 527 SKU-000405
406 Ultra Health & Beauty Product XL Health & Beauty $70.20 52 1.4 345 SKU-000406
407 Standard Office Supplies Product Mini Office Supplies $87.39 220 2.0 669 SKU-000407
408 Professional Clothing Product XL Clothing $286.74 81 1.7 168 SKU-000408
409 Ultra Electronics Product Max Electronics $131.40 205 2.3 110 SKU-000409
410 Economy Books Product Mini Books $736.19 421 4.4 629 SKU-000410
411 Super Books Product Lite Books $70.77 468 4.0 397 SKU-000411
412 Ultra Home & Garden Product Classic Home & Garden $608.49 132 3.6 734 SKU-000412
413 Economy Electronics Product Plus Electronics $368.76 258 2.7 922 SKU-000413
414 Elite Electronics Product XL Electronics $788.26 404 2.6 431 SKU-000414
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