使用 SQL 实现分页批处理,可以按照如下步骤进行:
首先将数据按照主键排序,然后调用窗口函数 row_number()
为每一行数据生成行号,接着调用聚合函数按照设置好的页面大小对行号进行分组,最终计算出每页的最小值和最大值。
SELECT floor((t.row_num - 1) / 1000) + 1 AS page_num, min(t.id) AS start_key, max(t.id) AS end_key, count(*) AS page_size FROM ( SELECT id, row_number() OVER (ORDER BY id) AS row_num FROM books ) t GROUP BY page_num ORDER BY page_num;
接下来,只需要使用WHERE id BETWEEN start_key AND end_key
语句查询每个分片的数据即可。修改数据时,也可以借助上面计算好的分片信息,实现高效的数据更新。
详细请参考:分页查询 | TiDB 文档中心 (pingcap.com)
标签:数据量,分页,page,查询,num,key,id,row From: https://www.cnblogs.com/bingrong/p/18454671