Efficient Pagination with Skip/Take

Efficient pagination using OFFSET-FETCH on SQL Server.

Execution Time

22 ms

Page Size

25

Current Page

461 / 978

Total Records

24441

Items per page: 25 50 100 200

Page 461 Results Showing 11501 - 11525 of 24441

ID Name Category Price Stock Rating Reviews SKU
12060 Bulk Product 384ed18b Home & Garden $519.32 477 4.4 34 BULK-d934fa92
12061 Bulk Product 05f634bb Clothing $620.21 376 1.3 25 BULK-7a042fcd
12062 Bulk Product ef1d5d83 Sports & Outdoors $450.85 283 4.8 11 BULK-ae190b60
12063 Bulk Product 7b7941ca Sports & Outdoors $331.40 423 1.2 78 BULK-d028e0ff
12064 Bulk Product f4adb481 Books $930.56 455 3.0 90 BULK-f21711a2
12065 Bulk Product 6da652e5 Electronics $364.25 233 3.6 15 BULK-4cf1a616
12066 Bulk Product 71d646dc Books $194.27 382 0.8 57 BULK-c24687c8
12067 Bulk Product c6f9590d Electronics $589.98 33 4.6 81 BULK-e9d353d3
12068 Bulk Product f4b14f29 Books $397.09 355 1.7 7 BULK-38c23fb9
12069 Bulk Product d6ad5c71 Electronics $981.30 115 3.7 12 BULK-c45a4b18
12070 Bulk Product 51a3bfe3 Home & Garden $93.01 432 1.4 86 BULK-f713984c
12071 Bulk Product 068da1c2 Clothing $728.94 45 2.8 94 BULK-71a3e6c6
12072 Bulk Product 39ba7b69 Toys & Games $930.69 160 2.8 69 BULK-687ae153
12073 Bulk Product 0e67d12a Sports & Outdoors $426.41 145 2.6 99 BULK-a6874b06
12074 Bulk Product 9561e18e Home & Garden $606.95 317 0.4 22 BULK-85dda9ce
12075 Bulk Product 226ff8c5 Toys & Games $954.18 236 4.7 76 BULK-2a5b769e
12076 Bulk Product 1cd759ff Toys & Games $467.85 402 4.1 91 BULK-f59cc112
12077 Bulk Product 476410ae Books $522.79 122 4.8 83 BULK-b52ebdc5
12078 Bulk Product 6e242920 Electronics $390.23 419 4.6 80 BULK-15440cc5
12079 Bulk Product f7525f7b Electronics $755.80 301 3.7 99 BULK-d93fd940
12080 Bulk Product 94562141 Home & Garden $650.70 468 3.7 82 BULK-e5fbf881
12081 Bulk Product 6ec93f70 Home & Garden $317.54 132 0.1 61 BULK-91f561f6
12082 Bulk Product a33a84e5 Books $684.89 133 2.1 1 BULK-4a7e571e
12083 Bulk Product 0ff4f9ad Sports & Outdoors $478.58 86 3.1 73 BULK-ade3deb8
12084 Bulk Product eb6c6ade Sports & Outdoors $965.75 12 3.5 17 BULK-e522e5d1
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