Efficient Pagination with Skip/Take

Efficient pagination using OFFSET-FETCH on SQL Server.

Execution Time

20 ms

Page Size

25

Current Page

581 / 978

Total Records

24441

Items per page: 25 50 100 200

Page 581 Results Showing 14501 - 14525 of 24441

ID Name Category Price Stock Rating Reviews SKU
15060 Bulk Product 7e14b878 Sports & Outdoors $540.89 44 2.1 60 BULK-6b20b79e
15061 Bulk Product 7ac8635c Home & Garden $689.99 415 2.3 62 BULK-300a834e
15062 Bulk Product ea2fa4bc Toys & Games $13.36 170 4.5 74 BULK-55b98c36
15063 Bulk Product 852a3438 Home & Garden $759.73 148 4.4 54 BULK-402a5b06
15064 Bulk Product 017006ce Toys & Games $574.98 20 3.2 1 BULK-54c79f6e
15065 Bulk Product a4b641e6 Toys & Games $249.32 160 3.7 25 BULK-733aa3e3
15066 Bulk Product 6e98f22f Toys & Games $758.29 129 1.7 60 BULK-2b2d0106
15067 Bulk Product 040ec003 Home & Garden $396.62 80 1.7 83 BULK-31824bbc
15068 Bulk Product 52733a2c Sports & Outdoors $421.76 422 2.5 6 BULK-d62cc501
15069 Bulk Product 1c130665 Sports & Outdoors $750.31 53 1.3 2 BULK-a4aa3f64
15070 Bulk Product bf920fd8 Home & Garden $983.52 482 1.1 54 BULK-99447581
15071 Bulk Product a42308a6 Toys & Games $424.34 356 2.6 61 BULK-68f21285
15072 Bulk Product 3a941213 Sports & Outdoors $679.76 216 2.3 53 BULK-f529ed41
15073 Bulk Product 2a8d16db Toys & Games $125.52 84 0.8 61 BULK-d60362c5
15074 Bulk Product 291a711c Sports & Outdoors $39.07 267 4.0 66 BULK-42b41af5
15075 Bulk Product aa37114f Toys & Games $84.74 324 2.6 58 BULK-02531601
15076 Bulk Product 9a165639 Clothing $963.80 206 1.3 98 BULK-73588520
15077 Bulk Product 50ea8796 Books $221.09 34 1.4 13 BULK-c08146b3
15078 Bulk Product 52f7e7d3 Books $527.92 291 0.6 26 BULK-5c2469d1
15079 Bulk Product 3d53934a Home & Garden $128.46 444 0.0 28 BULK-3637522c
15080 Bulk Product 4c39a1e0 Home & Garden $481.52 270 4.3 55 BULK-bc6f7320
15081 Bulk Product 88a19787 Electronics $800.49 386 1.2 85 BULK-065892be
15082 Bulk Product 7b2a178e Clothing $893.34 411 4.5 82 BULK-1a4c81c3
15083 Bulk Product 5cac59bd Books $187.70 298 2.7 17 BULK-2b452b56
15084 Bulk Product e0ee2fcf Toys & Games $528.48 51 3.2 72 BULK-c0560ecb
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