Efficient Pagination with Skip/Take

Efficient pagination using OFFSET-FETCH on SQL Server.

Execution Time

28 ms

Page Size

25

Current Page

914 / 978

Total Records

24441

Items per page: 25 50 100 200

Page 914 Results Showing 22826 - 22850 of 24441

ID Name Category Price Stock Rating Reviews SKU
23385 Bulk Product 06060d48 Toys & Games $667.87 50 4.9 87 BULK-8b7eef37
23386 Bulk Product c7a83a71 Toys & Games $801.97 72 4.5 96 BULK-ddb85f66
23387 Bulk Product 6db25de6 Books $327.88 233 3.9 33 BULK-09ce7b2a
23388 Bulk Product 3d4aa8b7 Toys & Games $455.51 220 1.1 72 BULK-b1eacd24
23389 Bulk Product 9673b025 Sports & Outdoors $355.87 145 1.3 7 BULK-bb7d79bd
23390 Bulk Product bcf8494f Home & Garden $955.69 365 4.3 61 BULK-825a4d7b
23391 Bulk Product 6c3788d8 Sports & Outdoors $965.81 469 1.2 6 BULK-c4453b14
23392 Bulk Product 45233d40 Clothing $22.35 491 1.9 42 BULK-3c51a268
23393 Bulk Product 5a0bfb84 Sports & Outdoors $473.32 239 1.0 95 BULK-14958cf7
23394 Bulk Product 7e312dcc Home & Garden $950.79 355 5.0 40 BULK-eef4445e
23395 Bulk Product a5123357 Electronics $458.04 111 0.1 55 BULK-dd0fc5a1
23396 Bulk Product 0a5503c8 Clothing $816.13 1 5.0 53 BULK-6808db26
23397 Bulk Product 8d6954fb Toys & Games $686.96 239 2.8 48 BULK-98635389
23398 Bulk Product 04a29a9c Sports & Outdoors $919.88 427 4.7 98 BULK-13b23db8
23399 Bulk Product 1f1e1ade Sports & Outdoors $342.50 333 2.7 64 BULK-61c2748f
23400 Bulk Product dbd6d9da Toys & Games $89.94 268 2.4 40 BULK-08c380ab
23401 Bulk Product 533eb877 Home & Garden $821.24 341 3.4 13 BULK-1d31898e
23402 Bulk Product 95c59c25 Sports & Outdoors $525.53 375 2.8 51 BULK-f46f164d
23403 Bulk Product 9e29dd83 Books $685.03 308 4.0 90 BULK-a45dae96
23404 Bulk Product fa763c12 Toys & Games $321.87 64 3.2 63 BULK-653ad23f
23405 Bulk Product 8bba6776 Sports & Outdoors $260.78 316 2.8 11 BULK-084912b0
23406 Bulk Product d6e9a57f Toys & Games $204.99 374 1.8 26 BULK-36342440
23407 Bulk Product bbed0495 Sports & Outdoors $1,003.14 408 3.3 20 BULK-82e30d80
23408 Bulk Product d212d691 Home & Garden $255.76 397 2.5 23 BULK-3b32dc9c
23409 Bulk Product 7bdb7bc2 Sports & Outdoors $194.84 34 4.3 4 BULK-dad77a09
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