Freigeben über


OFFSET LIMIT (NoSQL-Abfrage)

GILT FÜR: NoSQL

Die Klausel OFFSET LIMIT ist eine optionale Klausel zum Überspringen und dann Annehmen einer Anzahl von Werten aus der Abfrage. In der Klausel „OFFSET LIMIT“ muss die Anzahl OFFSET und die Anzahl LIMIT angegeben werden.

Wenn OFFSET LIMIT bei einer ORDER BY-Klausel verwendet wird, wird das Resultset erstellt, indem Werte zuerst übersprungen und dann die sortierten Werte angenommen werden. Wenn keine ORDER BY-Klausel verwendet wird, führt dies zu einer deterministischen Reihenfolge der Werte.

Syntax

OFFSET <offset_amount> LIMIT <limit_amount>

Argumente

Beschreibung
<offset_amount> Mit diesem Argument wird die ganzzahlige Anzahl von Elementen festgelegt, die die Abfrageergebnisse überspringen sollen.
<limit_amount> Mit diesem Argument wird die ganzzahlige Anzahl von Elementen festgelegt, die die Abfrageergebnisse enthalten sollten.

Beispiele

Für das Beispiel in diesem Abschnitt wird dieser Verweissatz von Elementen verwendet. Jedes Element enthält eine name-Eigenschaft.

[
  {
    "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"
  }
]

Hinweis

In den ursprünglichen JSON-Daten werden die Elemente nicht sortiert.

Das erste Beispiel enthält eine Abfrage, die nur die Eigenschaft aus allen Elementen zurückgibt, die name in alphabetischer Reihenfolge sortiert sind.

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"
  }
]

Dieses nächste Beispiel enthält eine Abfrage, die die OFFSET LIMIT Klausel verwendet, um das erste Element zu überspringen. Der Grenzwert wird auf die Anzahl der Elemente im Container festgelegt, um alle möglichen verbleibenden Werte zurückzugeben. In diesem Beispiel überspringt die Abfrage ein Element und gibt die verbleibenden vier elemente zurück (aus einem Grenzwert von fünf).

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"
  }
]

Dieses letzte Beispiel enthält eine Abfrage, die die OFFSET LIMIT Klausel verwendet, um eine Teilmenge der übereinstimmenden Elemente zurückzugeben, indem ein Element übersprungen und die nächsten drei Elemente verwendet werden.

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"
  }
]

Hinweise

  • Die OFFSET-Anzahl und die LIMIT-Anzahl sind in der OFFSET LIMIT-Klausel erforderlich. Wenn eine optionale ORDER BY-Klausel verwendet wird, wird das Resultset durch Überspringen der sortierten Werte erzeugt. Andernfalls gibt die Abfrage eine feste Reihenfolge von Werten zurück.
  • Die RU-Gebühr für eine Abfrage mit OFFSET LIMIT steigt bei zunehmender Anzahl der versetzten Begriffe. Für Abfragen mit mehreren Ergebnisseiten empfiehlt es sich in der Regel, Fortsetzungstoken zu verwenden. Fortsetzungstoken sind „Lesezeichen“ für die Stelle, an der die Abfrage später fortgesetzt werden kann. Wenn Sie OFFSET LIMIT verwenden, gibt es kein „Lesezeichen“. Wenn Sie die nächste Seite der Abfrage zurückgeben möchten, müssen Sie von Anfang an beginnen.
  • Sie sollten OFFSET LIMIT in Fällen verwenden, in denen Sie Elemente vollständig überspringen und Clientressourcen speichern möchten. Sie sollten OFFSET LIMIT z. B. verwenden, wenn Sie alles bis zum 1.000. Ergebnis der Abfrage überspringen und die Ergebnisse 1 bis 999 nicht anzeigen möchten. Auf dem Back-End lädt OFFSET LIMIT weiterhin jedes Element, einschließlich der übersprungenen Elemente. Der Leistungsvorteil wird in der Reduzierung von Clientressourcen gemessen, indem die Verarbeitung von nicht benötigten Elementen vermieden wird.