我想在AWS Athena上使用LIMIT
和OFFSET
子句运行查询。我认为前者在the latter is not时受到支持。有没有办法用其他方法模拟这个功能?
答案 0 :(得分:7)
使用OFFSET
进行分页效率非常低,特别是对于像Presto这样经常需要执行完整表或分区扫描的分析数据库。此外,查询之间的结果不一定一致,因此在页面之间导航时可能会出现重复或缺失的结果。
在像MySQL或PostgreSQL这样的OLTP
数据库中,最好在索引上使用范围查询,在那里您可以跟踪上一页上看到的最后一个值。
在像Presto这样的OLAP
数据库中,最好使用缓存数据缓存结果集并执行分页。每次用户点击进入不同页面时,您都不希望在数十亿或数万亿行上运行昂贵的查询。
有关问题和索引方法的更长解释,请参阅这些文章: