Efficient Pagination with Skip/Take

Efficient pagination using OFFSET-FETCH on SQL Server.

Execution Time

31 ms

Page Size

25

Current Page

830 / 978

Total Records

24441

Items per page: 25 50 100 200

Page 830 Results Showing 20726 - 20750 of 24441

ID Name Category Price Stock Rating Reviews SKU
21285 Bulk Product 986c5c97 Sports & Outdoors $620.93 229 3.8 22 BULK-8b93e3d6
21286 Bulk Product 3eb43fdf Electronics $201.90 205 2.7 24 BULK-f0a895f2
21287 Bulk Product de97b200 Toys & Games $862.44 82 2.4 39 BULK-9492fdf1
21288 Bulk Product afe3acc4 Sports & Outdoors $819.27 247 1.1 32 BULK-3830e2bd
21289 Bulk Product 9ca0a79f Sports & Outdoors $42.98 303 0.3 25 BULK-4e9f9463
21290 Bulk Product b3d46378 Electronics $64.40 358 4.3 7 BULK-b6becab2
21291 Bulk Product 2bd0094f Electronics $83.85 451 2.1 16 BULK-f012f738
21292 Bulk Product 2ed102ac Home & Garden $30.34 289 4.7 59 BULK-db60d982
21293 Bulk Product 24a4e9f3 Clothing $844.79 276 3.8 6 BULK-15ef99a8
21294 Bulk Product 665ac120 Clothing $521.17 293 0.9 24 BULK-0bf67a99
21295 Bulk Product 364d144a Toys & Games $572.28 442 4.3 25 BULK-b6202862
21296 Bulk Product 38c4aff6 Toys & Games $431.06 402 3.7 30 BULK-82506c77
21297 Bulk Product bd33e197 Home & Garden $679.12 331 3.3 79 BULK-0e366c6d
21298 Bulk Product b4869314 Books $422.51 393 2.9 16 BULK-4c1e4a51
21299 Bulk Product c9bcb6e9 Home & Garden $603.81 49 4.3 44 BULK-1269b044
21300 Bulk Product 1e7e6b37 Electronics $710.54 267 2.9 87 BULK-d106c526
21301 Bulk Product 5b4216c6 Toys & Games $101.74 255 4.2 15 BULK-67a178f0
21302 Bulk Product a8e56897 Toys & Games $47.81 162 0.9 61 BULK-9039c4e9
21303 Bulk Product e73e78d7 Sports & Outdoors $54.23 122 3.2 90 BULK-0bc53358
21304 Bulk Product ee44c0a9 Sports & Outdoors $333.88 398 4.3 56 BULK-a14f82d7
21305 Bulk Product c2cddffa Books $847.04 88 0.4 60 BULK-71764223
21306 Bulk Product 865fa180 Toys & Games $168.25 148 0.4 61 BULK-8b8dc1e1
21307 Bulk Product 76319587 Toys & Games $300.53 94 2.1 83 BULK-89fe961b
21308 Bulk Product 3bf555e9 Toys & Games $194.29 242 2.6 69 BULK-581f5afb
21309 Bulk Product 09708ea5 Sports & Outdoors $900.04 139 4.7 17 BULK-3b463e5b
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