Efficient Pagination with Skip/Take

Efficient pagination using OFFSET-FETCH on SQL Server.

Execution Time

12 ms

Page Size

25

Current Page

1 / 978

Total Records

24441

Items per page: 25 50 100 200

Page 1 Results Showing 1 - 25 of 24441

ID Name Category Price Stock Rating Reviews SKU
1 Professional Books Product XL Books $300.20 159 1.4 597 SKU-000001
3 Mega Home & Garden Product Lite Home & Garden $745.30 237 2.4 931 SKU-000003
4 Super Home & Garden Product Lite Home & Garden $566.14 305 1.9 762 SKU-000004
5 Economy Sports & Outdoors Product 2024 Sports & Outdoors $454.59 58 4.9 875 SKU-000005
6 Ultra Office Supplies Product Classic Office Supplies $680.12 65 4.8 458 SKU-000006
7 Premium Food & Grocery Product Plus Food & Grocery $893.65 58 4.5 692 SKU-000007
8 Premium Toys & Games Product Advanced Toys & Games $777.64 269 3.0 20 SKU-000008
9 Elite Office Supplies Product XL Office Supplies $524.92 447 1.1 813 SKU-000009
10 Premium Sports & Outdoors Product Mini Sports & Outdoors $194.23 440 2.5 512 SKU-000010
11 Super Automotive Product Plus Automotive $131.31 174 2.1 182 SKU-000011
12 Super Home & Garden Product Pro Home & Garden $457.54 211 4.3 283 SKU-000012
13 Premium Home & Garden Product Special Edition Home & Garden $63.63 356 5.0 487 SKU-000013
14 Economy Food & Grocery Product Lite Food & Grocery $837.73 156 2.0 775 SKU-000014
15 Mega Toys & Games Product Advanced Toys & Games $920.27 487 5.0 840 SKU-000015
17 Standard Books Product Mini Books $775.00 108 1.4 264 SKU-000017
18 Pro Sports & Outdoors Product Max Sports & Outdoors $218.35 248 2.7 370 SKU-000018
19 Economy Office Supplies Product 2024 Office Supplies $619.90 158 4.0 481 SKU-000019
20 Mega Health & Beauty Product Advanced Health & Beauty $378.20 25 4.8 610 SKU-000020
21 Ultra Sports & Outdoors Product Max Sports & Outdoors $458.74 188 1.8 477 SKU-000021
22 Professional Toys & Games Product Special Edition Toys & Games $555.99 272 1.0 524 SKU-000022
24 Mega Books Product Plus Books $97.64 83 1.4 673 SKU-000024
25 Super Clothing Product XL Clothing $607.42 230 4.1 797 SKU-000025
26 Ultra Sports & Outdoors Product Advanced Sports & Outdoors $58.41 88 3.8 618 SKU-000026
27 Professional Health & Beauty Product Advanced Health & Beauty $577.82 244 4.7 853 SKU-000027
28 Mega Automotive Product Mini Automotive $199.65 251 2.2 890 SKU-000028
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