AWS Athena 上的偏移量
Posted
技术标签:
【中文标题】AWS Athena 上的偏移量【英文标题】:OFFSET on AWS Athena 【发布时间】:2017-12-20 05:13:58 【问题描述】:我想使用 LIMIT
和 OFFSET
子句在 AWS Athena 上运行查询。我认为the latter is not 支持前者。有没有办法使用其他方法来模拟此功能?
【问题讨论】:
【参考方案1】:使用OFFSET
进行分页效率非常低,尤其是对于像 Presto 这样经常需要执行全表或分区扫描的分析数据库。此外,查询之间的结果不一定一致,因此在页面之间导航时可能会出现重复或丢失的结果。
在像 mysql 或 PostgreSQL 这样的 OLTP
数据库中,最好对索引使用范围查询,您可以在其中跟踪上一页上看到的最后一个值。
在像 Presto 这样的OLAP
数据库中,最好缓存结果集并使用缓存的数据执行分页。您不希望每次用户点击转到不同的页面时都运行数十亿或数万亿行的昂贵查询。
有关问题和索引方法的详细说明,请参阅这些文章:
http://use-the-index-luke.com/no-offset http://use-the-index-luke.com/sql/partial-results/fetch-next-page【讨论】:
请注意,自 311 以来,Trino 中提供了 OFFSET 语法。请参阅 trino.io/docs/current/release/…以上是关于AWS Athena 上的偏移量的主要内容,如果未能解决你的问题,请参考以下文章