Files
2025-11-29 18:22:25 +08:00

44 lines
1014 B
Markdown

# Performance Comparison
## Benchmark: 500k Posts
**Cursor Pagination (id index):**
- Page 1: 8ms
- Page 100: 9ms
- Page 1000: 10ms
- Page 10000: 11ms
- **Stable performance**
**Offset Pagination (createdAt index):**
- Page 1: 7ms
- Page 100: 95ms
- Page 1000: 890ms
- Page 10000: 8,900ms
- **Linear degradation**
## Memory Usage
Both approaches:
- Load only pageSize records into memory
- Similar memory footprint for same page size
- Database performs filtering/sorting
## Database Load
**Cursor:**
- Index scan from cursor position
- Reads pageSize + 1 rows (for hasMore check)
**Offset:**
- Index scan from beginning
- Skips offset rows (database work, not returned)
- Reads pageSize rows
## Optimization Guidelines
1. **Always add indexes** on ordering fields
2. **Test with realistic data volumes** before production
3. **Monitor query performance** in production
4. **Cache total counts** for offset pagination when possible
5. **Use cursor by default** unless specific requirements demand offset