我在InfluxQL查询中使用LIMIT
和OFFSET
处理分页。
例如,在具有3行的测量中。
> SELECT *::field FROM i2QYtZBVSnuXjLhQhuAV6w;
name: i2QYtZBVSnuXjLhQhuAV6w
time hello
---- -----
2018-02-23T18:00:00Z 1000
2018-02-23T18:30:00Z 1200
2018-02-23T19:00:00Z 990
假设我使用
LIMIT
和OFFSET
逐行读取行:> SELECT *::field FROM i2QYtZBVSnuXjLhQhuAV6w LIMIT 1;
name: i2QYtZBVSnuXjLhQhuAV6w
time hello
---- -----
2018-02-23T18:00:00Z 1000
> SELECT *::field FROM i2QYtZBVSnuXjLhQhuAV6w LIMIT 1 OFFSET 1;
name: i2QYtZBVSnuXjLhQhuAV6w
time hello
---- -----
2018-02-23T18:30:00Z 1200
> SELECT *::field FROM i2QYtZBVSnuXjLhQhuAV6w LIMIT 1 OFFSET 2;
name: i2QYtZBVSnuXjLhQhuAV6w
time hello
---- -----
2018-02-23T19:00:00Z 990
是否有办法知道在不执行其他查询的情况下没有更多数据?
编辑:我的用例是为面向用户的REST API生成“下一页 token ”。我想避免给用户一个 token ,该 token 只会返回一个空行集。
最佳答案
为避免其他查询,您始终可以使用limit作为(limit + 1)进行数据库查询。
例如:如果实际限制为5,则将限制设置为6,并且仅在结果集有6行时才给出下一页标记。另外,仅将5行数据返回给客户端。