随着业务的不断发展,可能会导致我们的数据数量会越来越庞大,一般我们会对数据进行分页查询。我们可以通过限制分页查询数量来提升查询效率,但是,当我们的页码横跨很大时,譬如,我当前在第一页,通常一页显示10条数据,假如我们总共有10W条数据,就有1w页。此时我想从第一页跳转到第5k页,如果我们还是用传统的分页模式,就会导致查询性能急速下降,这就违背了我们使用分页的初衷了。
如何解决这种问题呢?
当我们的主键id设置为自增时,由于整个表数据都是有序的,我们便可根据页码信息计算出数据的起始主键id,按照此方法就可以快速查询数据。不过此方案缺点也十分明显,显然,我们需要整张表数据的有效数据的主键都是连续自增的,这就导致在数据变动时,例如删除数据,我们需要维护整个表的主键id以重新达到连续的效果,反而增加了维护成本。
我们可以通过页面来控制用户可以跨度的最大页码范围,我了解到百度,谷歌等公司都是限制10页。也就是说最大允许用户从第一页跨度到第十页,这就完美解决了问题,并且不需要任何成本。