44 lines
1014 B
Markdown
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
|