可以的,但要看你指的是哪种“Cursor 游标”,因为这个词在不同语境下含义不一样。下面分情况说明:
一般不直接用于“分页”,但可以实现类似效果。
FETCH NEXT / OFFSET 模拟分页,但效率低、不推荐。DECLARE cur CURSOR FOR SELECT id FROM users;
OPEN cur;
FETCH NEXT 10 FROM cur; -- 第一页
OFFSET FETCH 或 LIMIT/OFFSETSELECT * FROM users ORDER BY id OFFSET 20 LIMIT 10;
这是现在最主流的“游标分页”,尤其用于:
OFFSET 性能问题id / created_at)作为“游标”SELECT * FROM orders
WHERE id > last_id
ORDER BY id
LIMIT 10;
search_after(游标分页)✅Elasticsearch 不推荐 from + size 深分页,而是用:
{
"size": 10,
"search_after": [last_sort_value],
"sort": [{ "created_at": "asc" }]
}
这就是游标分页。
psycopg2、pymysql):
cursor.fetchmany(10) 可以“分批取”ResultSet 可滚动,但依旧不替代分页查询| 场景 | 能否分页 | 建议 |
|---|---|---|
| 数据库游标 | ❌ 不推荐 | 用 LIMIT / OFFSET |
| API 游标分页 | ✅ 非常推荐 | 用排序字段做游标 |
| ES | ✅ | search_after |
| 程序 Cursor | ⚠️ 模拟 | fetchmany |
如果你能告诉我:
我可以直接给你具体可用的分页方案。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。