2017-07-15 82 views

回答

3

使用OFFSET进行分页效率非常低,尤其是对于像Presto这样的分析数据库,通常需要执行全表或分区扫描。此外,查询之间的结果不一定一致,因此在页面之间导航时可能会出现重复或缺少结果。

OLTP数据库(如MySQL或PostgreSQL)中,最好对索引使用范围查询,以便跟踪上一页中显示的最后一个值。

在像Presto这样的OLAP数据库中,最好是缓存结果集并使用缓存数据执行分页。每次用户点击转到不同的页面时,您不希望对数十亿或数万亿行进行昂贵的查询。

参见该问题的更详细的解释和指标的做法,这些文章: