那么多张表联合分页是如何做到的呢?
如果分表的依据是字段 A, 但是需要根据字段 B 进行分页查询, 针对这种情况应该如何处理呢?
为了后面方便说明, 这里举个例子....多表
对于多表的情况, 将其抽象一下, 就是有两个有序列表:
[1, 5, 7, 8, 9]
[2, 3, 4, 6, 10]
现在要取合并后的有序列表第 n 页的数据....对应到 sql查询中, 如果要取第三页的数据, 可以肯定的是, 每个列表都不会读到第四页, 所以我们可以将每个表的前三页拿出来, 在内存中进行合并后, 就可以拿到全局的第三页了.
# 取第三页的数据
select...比如, 上一次查询, 最后一条数据是8, 那么, 下一次查询从各个列表中取出大于8的10条数据, 内存排序后取前10条, 同时将最后一条的值存下来供下一次查询使用....组合后返回结果为:
[5, 6, 9, 10]
这, 明眼人一看, 就知道结果应该是[5, 6, 7, 8].
很明显, 因为数据都在一张表上, 所以导致第一次获取数据没有取完.