Efficient Pagination with Skip/Take

Efficient pagination using OFFSET-FETCH on SQL Server.

Execution Time

23 ms

Page Size

25

Current Page

175 / 978

Total Records

24441

Items per page: 25 50 100 200

Page 175 Results Showing 4351 - 4375 of 24441

ID Name Category Price Stock Rating Reviews SKU
4901 Mega Food & Grocery Product Mini Food & Grocery $664.56 150 2.9 436 SKU-004901
4902 Super Office Supplies Product Mini Office Supplies $720.19 306 2.1 26 SKU-004902
4903 Deluxe Automotive Product Lite Automotive $161.26 378 3.3 861 SKU-004903
4905 Elite Electronics Product Mini Electronics $789.65 323 1.1 153 SKU-004905
4907 Super Office Supplies Product Classic Office Supplies $936.25 410 3.7 510 SKU-004907
4908 Elite Food & Grocery Product Lite Food & Grocery $516.45 355 2.3 416 SKU-004908
4909 Ultra Toys & Games Product XL Toys & Games $57.72 390 2.4 643 SKU-004909
4910 Economy Clothing Product Classic Clothing $208.49 390 4.1 244 SKU-004910
4911 Elite Books Product Advanced Books $987.45 382 2.2 113 SKU-004911
4912 Premium Health & Beauty Product 2024 Health & Beauty $818.56 124 1.8 624 SKU-004912
4913 Elite Electronics Product 2024 Electronics $991.80 44 3.3 623 SKU-004913
4914 Economy Clothing Product Mini Clothing $814.89 109 2.4 289 SKU-004914
4915 Super Office Supplies Product Classic Office Supplies $924.22 291 3.6 800 SKU-004915
4916 Pro Electronics Product Plus Electronics $220.28 51 2.3 499 SKU-004916
4917 Premium Food & Grocery Product Advanced Food & Grocery $482.90 182 4.0 629 SKU-004917
4918 Standard Sports & Outdoors Product Advanced Sports & Outdoors $256.09 320 2.2 446 SKU-004918
4921 Ultra Food & Grocery Product Lite Food & Grocery $589.57 299 4.6 910 SKU-004921
4922 Pro Food & Grocery Product Lite Food & Grocery $815.88 32 1.8 636 SKU-004922
4923 Pro Sports & Outdoors Product Max Sports & Outdoors $467.43 352 1.8 868 SKU-004923
4924 Professional Clothing Product Lite Clothing $338.95 48 2.0 883 SKU-004924
4925 Elite Clothing Product 2024 Clothing $493.27 455 4.3 569 SKU-004925
4926 Pro Home & Garden Product Lite Home & Garden $952.21 379 2.1 394 SKU-004926
4927 Ultra Clothing Product 2024 Clothing $80.57 498 3.1 995 SKU-004927
4928 Pro Toys & Games Product Advanced Toys & Games $130.81 348 2.0 687 SKU-004928
4929 Elite Home & Garden Product Classic Home & Garden $25.84 474 1.2 131 SKU-004929
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