OFFSET LIMIT (requête NoSQL)
S’APPLIQUE À : NoSQL
La clause OFFSET LIMIT
est une clause facultative qui permet d’ignorer et de récupérer un certain nombre de valeurs de la requête. Le nombre OFFSET
et le nombre LIMIT
sont obligatoires dans la clause OFFSET LIMIT.
Lorsque OFFSET LIMIT
est utilisé avec une clause ORDER BY
, la requête génère le jeu de résultats en ignorant certaines valeurs, puis en récupérant certaines valeurs ordonnées. Si aucune clause ORDER BY
n’est utilisée, l’ordre des valeurs est déterministe.
Syntaxe
OFFSET <offset_amount> LIMIT <limit_amount>
Arguments
Description | |
---|---|
<offset_amount> |
Spécifie le nombre entier d’éléments que doivent ignorer les résultats de la requête. |
<limit_amount> |
Spécifie le nombre entier d’éléments que doivent inclure les résultats de la requête. |
Exemples
Pour l’exemple de cette section, cet ensemble d’éléments de référence est utilisé. Chaque élément inclut une propriété name
.
[
{
"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"
}
]
Remarque
Dans les données JSON d’origine, les éléments ne sont pas triés.
Le premier exemple inclut une requête qui retourne uniquement la name
propriété de tous les éléments triés par ordre alphabétique.
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"
}
]
Cet exemple suivant inclut une requête utilisant la OFFSET LIMIT
clause pour ignorer le premier élément. La limite est définie sur le nombre d’éléments du conteneur pour retourner toutes les valeurs restantes possibles. Dans cet exemple, la requête ignore un élément et retourne les quatre restants (sur une limite de cinq).
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"
}
]
Cet exemple final inclut une requête utilisant la OFFSET LIMIT
clause pour retourner un sous-ensemble des éléments correspondants en ignorant un élément et en prenant les trois suivants.
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"
}
]
Notes
- Le nombre
OFFSET
et le nombreLIMIT
sont requis dans la clauseOFFSET LIMIT
. Si une clauseORDER BY
facultative est utilisée, la requête génère le jeu de résultats en classant d’abord les valeurs avant d’en ignorer et conserver les nombres indiqués. Sinon, la requête retourne un ordre fixe de valeurs. - Les frais d’unité de requête pour une requête avec
OFFSET LIMIT
augmente au fur et à mesure que le nombre de termes Offset augmente. Pour les requêtes affichant plusieurs pages de résultats, nous recommandons généralement d’utiliser des jetons de continuation. Les jetons de continuation sont un « signet » indiquant l’endroit où la requête pourra reprendre. Si vous utilisezOFFSET LIMIT
, il n’y a pas de « signet «, si vous souhaitez retourner à la page suivante de la requête, il vous faudrait commencer depuis le début. - Vous devez utiliser
OFFSET LIMIT
lorsque vous souhaitez ignorer des éléments entiers et enregistrer des ressources du client. Par exemple, utilisezOFFSET LIMIT
si vous souhaitez passer au millième résultat de la requête et que vous n’avez pas besoin d’afficher les résultats compris entre 1 et 999. Sur le back-end,OFFSET LIMIT
charge toujours chaque élément, y compris ceux qui sont ignorés. L’avantage, pour ce qui est de la performance, est que cela permet de réduire les ressources du client en évitant de traiter des éléments qui ne sont pas nécessaires.