雅典娜基本上是由Presto管理的。从Presto311开始,您可以使用
OFFSETm LIMIT n语法或等效的ANSI SQL :
OFFSET m ROWS FETCH NEXT n ROWS ONLY。
您可以在超越极限中阅读更多内容,Presto满足OFFSET和TIES的要求。
对于较旧的版本(在撰写本文时,包括AWS Athena在内)
,您可以使用
row_number()窗口函数来实现OFFSET
+ LIMIT。
例如,代替
SELECt * FROM elb_logsOFFSET 5 LIMIT 5 -- this doesn't work, obviously
您可以执行
SELECt * FROM ( SELECt row_number() over() AS rn, * FROM elb_logs)WHERe rn BETWEEN 5 AND 10;
注意:执行引擎仍将需要从基础表中读取offset + limit行,但这仍然比将所有这些行发送回客户端并在其中放置子列表要好得多。
警告:请参阅https://codingdict.com/questions/211823了解为什么在查询中避免OFFSET通常是个好主意。



