Efficient Pagination with Skip/Take

Efficient pagination using OFFSET-FETCH on SQL Server.

Execution Time

19 ms

Page Size

25

Current Page

503 / 978

Total Records

24441

Items per page: 25 50 100 200

Page 503 Results Showing 12551 - 12575 of 24441

ID Name Category Price Stock Rating Reviews SKU
13110 Bulk Product ab4d32a2 Electronics $856.84 177 2.6 96 BULK-e1500b8f
13111 Bulk Product a9b5ad59 Clothing $379.47 151 1.0 39 BULK-86ffb339
13112 Bulk Product b89f0ffe Sports & Outdoors $19.98 403 2.9 84 BULK-67be35e7
13113 Bulk Product ddaf8d2e Books $575.96 398 1.9 43 BULK-09c01041
13114 Bulk Product f07ed1e2 Sports & Outdoors $93.96 408 0.3 18 BULK-3b8371f5
13115 Bulk Product 0b868846 Sports & Outdoors $970.00 215 1.9 79 BULK-2e272fc9
13116 Bulk Product 7a0fa1cd Books $357.48 103 2.4 48 BULK-faa8ec39
13117 Bulk Product ccc42233 Home & Garden $479.55 75 0.6 92 BULK-6f68b987
13118 Bulk Product 14af09c2 Sports & Outdoors $799.47 23 1.4 87 BULK-8cd31d9d
13119 Bulk Product 7113ea85 Books $125.63 252 0.1 37 BULK-cb7a2de0
13120 Bulk Product 48d009db Home & Garden $633.05 93 0.7 48 BULK-61c9e743
13121 Bulk Product 889070ce Sports & Outdoors $392.20 217 0.7 16 BULK-961bbb93
13122 Bulk Product 3bf8db3e Toys & Games $280.16 181 3.0 14 BULK-dcf74007
13123 Bulk Product feadde2a Electronics $482.75 241 4.1 94 BULK-be8544b4
13124 Bulk Product 4d59da5c Sports & Outdoors $407.64 425 3.0 78 BULK-2516bdfc
13125 Bulk Product 96bbc737 Home & Garden $956.74 196 2.5 79 BULK-5fd623b8
13126 Bulk Product 1378dfdb Home & Garden $722.06 55 2.2 63 BULK-dab2297b
13127 Bulk Product 0c8b7d2b Electronics $108.44 212 3.8 57 BULK-90ee7aff
13128 Bulk Product 1219c1a1 Home & Garden $139.79 396 3.6 78 BULK-c63eca71
13129 Bulk Product b41e241d Sports & Outdoors $247.85 58 0.6 12 BULK-0284a9c5
13130 Bulk Product e6beb681 Toys & Games $16.01 46 2.6 56 BULK-9d464b04
13131 Bulk Product 0f7ab2bd Books $212.29 438 4.3 42 BULK-7db00d62
13132 Bulk Product 6445c66b Sports & Outdoors $628.39 353 4.4 37 BULK-5a87c5ad
13133 Bulk Product 87683d6e Electronics $681.96 306 3.5 45 BULK-7304e6af
13134 Bulk Product fd86aca3 Toys & Games $905.40 160 3.1 31 BULK-deb18058
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