OFFSET LIMIT (dotaz NoSQL)
PLATÍ PRO: NoSQL
Klauzule OFFSET LIMIT
je volitelná klauzule, která se má přeskočit , a pak z dotazu vzít určitý počet hodnot. Počet OFFSET
a LIMIT
počet jsou vyžadovány v klauzuli OFFSET LIMIT.
Při OFFSET LIMIT
použití s ORDER BY
klauzulí se sada výsledků vytvoří tak, že se přeskočí a převezme seřazené hodnoty. Pokud se nepoužívá žádná ORDER BY
klauzule, výsledkem je deterministické pořadí hodnot.
Syntaxe
OFFSET <offset_amount> LIMIT <limit_amount>
Argumenty
Popis | |
---|---|
<offset_amount> |
Určuje celočíselné číslo položek, které mají výsledky dotazu přeskočit. |
<limit_amount> |
Určuje celočíselné číslo položek, které mají výsledky dotazu obsahovat. |
Příklady
V příkladu v této části se používá tato referenční sada položek. Každá položka obsahuje name
vlastnost.
[
{
"name": "Sawyer Miller",
"team": "Leadership team"
},
{
"name": "Jennifer Wilkins",
"team": "Leadership team"
},
{
"name": "Hannah Haynes",
"team": "Leadership team"
},
{
"name": "Isaac Talbot",
"team": "Leadership team"
},
{
"name": "Riley Johnson",
"team": "Leadership team"
}
]
Poznámka:
V původních datech JSON nejsou položky seřazené.
První příklad obsahuje dotaz, který vrátí pouze name
vlastnost ze všech položek seřazených v abecedním pořadí.
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"
}
]
Tento další příklad obsahuje dotaz pomocí OFFSET LIMIT
klauzule, která přeskočí první položku. Limit je nastavený na počet položek v kontejneru, aby se vrátily všechny možné zbývající hodnoty. V tomto příkladu dotaz přeskočí jednu položku a vrátí zbývající čtyři (z limitu pěti).
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"
}
]
Tento poslední příklad obsahuje dotaz, který pomocí OFFSET LIMIT
klauzule vrátí podmnožinu odpovídajících položek tak, že přeskočí jednu položku a vezme další tři.
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"
}
]
Poznámky
- V
OFFSET
klauzuli se vyžadujeOFFSET LIMIT
počet iLIMIT
počet. Pokud se použije volitelnáORDER BY
klauzule, vytvoří se sada výsledků přeskočením seřazených hodnot. V opačném případě dotaz vrátí pevné pořadí hodnot. - Poplatky za RU dotazu se s rostoucím
OFFSET LIMIT
počtem termínů posunu zvyšují. U dotazů s více stránkami výsledků obvykle doporučujeme používat tokeny pokračování. Tokeny pokračování jsou záložkou pro místo, kde se dotaz může později obnovit. Pokud použijeteOFFSET LIMIT
, neexistuje žádná záložka. Pokud byste chtěli vrátit další stránku dotazu, museli byste začít od začátku. - Pro případy, kdy chcete přeskočit položky zcela a uložit prostředky klienta, byste měli použít
OFFSET LIMIT
. PokudOFFSET LIMIT
například chcete přeskočit na 1000. výsledek dotazu a nemusíte zobrazovat výsledky 1 až 999. Na back-enduOFFSET LIMIT
se stále načte každá položka, včetně těch, které se přeskočí. Výhoda výkonu se měří při snižování prostředků klienta tím, že se vyhnete zpracování položek, které nejsou potřeba.