Efficient Pagination with Skip/Take

Efficient pagination using OFFSET-FETCH on SQL Server.

Execution Time

17 ms

Page Size

25

Current Page

706 / 978

Total Records

24441

Items per page: 25 50 100 200

Page 706 Results Showing 17626 - 17650 of 24441

ID Name Category Price Stock Rating Reviews SKU
18185 Bulk Product c114197e Clothing $317.80 334 3.8 57 BULK-5bb62f20
18186 Bulk Product 34f632f5 Books $441.37 447 0.3 81 BULK-c5974f0d
18187 Bulk Product b043764d Books $444.22 197 5.0 2 BULK-e716aba8
18188 Bulk Product d4c2466a Clothing $827.24 295 3.3 64 BULK-50d7b867
18189 Bulk Product 39d01f56 Home & Garden $416.60 394 3.9 97 BULK-4c708ba4
18190 Bulk Product 181a2054 Clothing $40.87 285 0.0 16 BULK-1da2a362
18191 Bulk Product 5157e80a Home & Garden $1,006.13 307 0.4 99 BULK-24c359ec
18192 Bulk Product 49fa911d Clothing $618.34 57 2.8 79 BULK-de514668
18193 Bulk Product cae472b6 Toys & Games $239.60 187 0.4 32 BULK-84c27643
18194 Bulk Product b11715bc Books $436.40 159 4.8 94 BULK-bdf503d8
18195 Bulk Product a4140a05 Toys & Games $718.73 40 0.1 80 BULK-a4f22490
18196 Bulk Product 513a444c Toys & Games $941.89 212 2.9 59 BULK-811dad47
18197 Bulk Product d6a3f69c Home & Garden $228.07 63 0.8 11 BULK-e8d60e83
18198 Bulk Product d25d5d65 Toys & Games $699.82 400 1.1 99 BULK-726d4173
18199 Bulk Product d019530d Sports & Outdoors $260.51 395 3.4 84 BULK-4db41590
18200 Bulk Product 7249ab3d Sports & Outdoors $490.87 171 4.1 46 BULK-e1e72c91
18201 Bulk Product 83032c2e Home & Garden $172.85 134 4.2 68 BULK-7221a9de
18202 Bulk Product 180fdb3f Toys & Games $841.92 226 4.9 75 BULK-bbd309ee
18203 Bulk Product b2e01d1b Books $597.86 455 0.7 88 BULK-cd402a03
18204 Bulk Product a2792299 Clothing $41.35 162 1.7 24 BULK-b211c5a1
18205 Bulk Product bd99e52a Electronics $43.61 261 3.7 91 BULK-70d731bd
18206 Bulk Product c1c5f854 Electronics $542.57 169 4.8 38 BULK-a861d0d5
18207 Bulk Product 639f5f2d Sports & Outdoors $655.90 332 2.6 1 BULK-41b3cbcc
18208 Bulk Product eb5d97a5 Sports & Outdoors $851.40 220 0.1 99 BULK-bc2deccc
18209 Bulk Product 87ed7ce8 Clothing $765.48 135 2.6 15 BULK-9d79bbcf
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