Partage via


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 nombre LIMIT sont requis dans la clause OFFSET LIMIT. Si une clause ORDER 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 utilisez OFFSET 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, utilisez OFFSET 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.