数据库虫洞与pager

最近在做大数据的pager, 遇到一个问题,pager如果数据特别多的时候,千万条百万条时候,点击最后面的page,加载特别缓慢。

原因是在于查询时,如果返回数据过多,如果是传统offset+limit的方法,则pager需要一个个的数,直到满足你指定page的数据。如果是越后面页数的数据,就需要数得越多。所以后面的page加载会慢


最好的解决方法是避免数数,比如说通过key值的计算,比如说key是从1~1000000这样顺序增长的,那么可以计算对应的第100页,key值范围是100×50~101×50(假如每页加载50条)。然后在查询的时候使用比较计算,这样效率会大大提高

但是问题又来了,如果这个key中间有虫洞咋办?比如说本来有1~1000000条数据,但是中间有不少数据给删除掉了,留下了很多空洞。那么如果通过key值计算就会有可能选不到想要的数据,极端情况,甚至在指定的页面一条数据也没有。


仔细想了想,并没有太好的解决办法



大家是否有更好的办法呢?欢迎讨论


你可能感兴趣的:(数据库虫洞与pager)