重新解释:以文章的例子来说,如果你order by了订单付款金额asc,那么3张表的三个迭代器(暂时叫a,b,c)内部的顺序都是金额小的在前面金额大的在后面,每个迭代器内部都是这样的对不对。...这个是毋庸置疑的,然后如果每个迭代器的头部第一次互相比较可以比较出 a0.金额>b0.金额>c0.金额,那么你是金额asc那么获取到c0放入内存(假设不分页),然后调用c.next()这样c就变成了c1...(),变成了a1再放入优先级队列,所以现在在内存里的永远比优先级队列和迭代器后面的小,这个是毋庸置疑的对吗,所以取到的都是正确的顺序数据可以按任何字段排序
sharding-core的优化
至此流式分表获取数据的原理基本上就是这样...sharding-core已经实现了以上所有的解决方案,并且已经在实现第三种优化,就是极不规则情况下的分页,具体就是当表查询坐落到3张表后其中2张表或者1张表的count极少的情况下直接取到内存然后剩余的...builder.PaginationSequence(o => o.Id) 配置当分页orderby 字段为Id时那么分表所对应的表结构为顺序,顺序的规则通过UseTailCompare来设置,其中string