千万级以上数据怎么实现分组分页(类似百度谷歌的分页)
百万数据以上分页的Skip偏移量会导致查询速度骤降!
我在网上看到的解决办法大多都是放弃偏移用边界条件(大于某个ID)limit进行查询,这种做无限加载还行,无法做到分页效果.
有一种思路是用分组分页边界条件加少量偏移实现分页:
每10个页为一组,查询只需要用这一组的起始边界ID(大于ID) 然后偏移Skip最多(10* pageSize)少量的偏移即可查询出数据.
问题是我要怎么得到这个边界ID,如果是递进翻页还行,在组内的最后一页时获取到最后一个数据ID,就可以当成下一组的边界起始ID.
但如果是跳转指定页面,例如从9页(第一组)直接跳到12页(第二组),这时候第一组的边界ID还没获得?
而且每组的边界ID怎么复用(redis存储,边界ID还会跟随查询条件变化)?
前台页码展示的实现?
搜了很多都没有一个比较完整的解决方案,自己梳理的比较模糊,希望听听大家的想法
鱼与熊掌不可兼得