OFFSET LIMIT(NoSQL 查询)
适用范围: NoSQL
OFFSET LIMIT
字句是一个可选子句,它会跳过然后提取查询中特定数目的值。 必须在 LIMIT 子句中指定 OFFSET
计数和 LIMIT
计数。
将 OFFSET LIMIT
与 ORDER BY
子句结合使用时,将通过跳过然后提取排序值来生成结果集。 如果不使用 ORDER BY
子句,则会生成值的确定顺序。
语法
OFFSET <offset_amount> LIMIT <limit_amount>
参数
说明 | |
---|---|
<offset_amount> |
指定查询结果应跳过的项数(整数)。 |
<limit_amount> |
指定查询结果应包含的项数(整数)。 |
示例
在本部分中的示例中,使用此引用的项集。 每个项都包含一个 name
属性。
[
{
"name": "Sawyer Miller",
},
{
"name": "Jennifer Wilkins",
},
{
"name": "Hannah Haynes",
},
{
"name": "Isaac Talbot",
},
{
"name": "Riley Johnson",
}
]
注意
在原始 JSON 数据中,不会对项进行排序。
第一个示例包括一个查询,该查询仅返回按字母顺序排序的所有项中的 name
属性。
SELECT VALUE {
name: e.name
}
FROM
employees e
WHERE
e.team = "Leadership team"
ORDER BY
e.name
[
{
"name": "Hannah Haynes"
},
{
"name": "Isaac Talbot"
},
{
"name": "Jennifer Wilkins"
},
{
"name": "Riley Johnson"
},
{
"name": "Sawyer Miller"
}
]
下一个示例包括一个使用 OFFSET LIMIT
子句跳过第一项的查询。 该限制被设置为容器中的项数,以返回所有可能的剩余值。 在此示例中,该查询跳过一项,并返回其余四项(上限为五项)。
SELECT VALUE {
name: e.name
}
FROM
employees e
WHERE
e.team = "Leadership team"
ORDER BY
e.name
OFFSET 1 LIMIT 5
[
{
"name": "Isaac Talbot"
},
{
"name": "Jennifer Wilkins"
},
{
"name": "Riley Johnson"
},
{
"name": "Sawyer Miller"
}
]
最后一个示例包括一个查询,该查询使用 OFFSET LIMIT
子句通过跳过一项并获取接下来的三项来返回匹配项的子集。
SELECT VALUE {
name: e.name
}
FROM
employees e
WHERE
e.team = "Leadership team"
ORDER BY
e.name
OFFSET 1 LIMIT 3
[
{
"name": "Isaac Talbot"
},
{
"name": "Jennifer Wilkins"
},
{
"name": "Riley Johnson"
}
]
注解
- 必须在
OFFSET LIMIT
子句中同时指定OFFSET
计数和LIMIT
计数。 如果使用可选的ORDER BY
子句,将会通过跳过排序值来生成结果集。 否则,查询将返回固定顺序的值。 - 使用
OFFSET LIMIT
进行查询时的 RU 费用会随着要跳过的字词数量的增加而增加。 对于有多个结果页的查询,我们通常建议使用继续标记。 继续标记是一个“书签”,用于在以后恢复查询。 如果使用OFFSET LIMIT
,则没有“书签。”如果希望返回查询的下一页,则必须从头开始。 - 如果希望完全跳过项并保存客户端资源,则应使用
OFFSET LIMIT
。 例如,如果要跳到第 1000 个查询结果,无需查看第 1 到第 999 个结果,则应使用OFFSET LIMIT
。 在后端,OFFSET LIMIT
仍会加载每个项,包括那些跳过的项。 性能优势体现在通过避免处理不需要的项目来减少客户端资源。