Dela via


OFFSET LIMIT (NoSQL-fråga)

GÄLLER FÖR: NoSQL

OFFSET LIMIT Satsen är en valfri sats för att hoppa över och sedan ta ett antal värden från frågan. Antalet OFFSET och antalet LIMIT krävs i OFFSET LIMIT-satsen.

När OFFSET LIMIT används med en ORDER BY sats skapas resultatuppsättningen genom att hoppa över och ta på sig de ordnade värdena. Om ingen ORDER BY sats används resulterar det i en deterministisk värdeordning.

Syntax

OFFSET <offset_amount> LIMIT <limit_amount>

Argument

beskrivning
<offset_amount> Anger det heltalsantal objekt som frågeresultatet ska hoppa över.
<limit_amount> Anger det heltalsantal objekt som frågeresultatet ska innehålla.

Exempel

I exemplet i det här avsnittet används den här referensuppsättningen med objekt. Varje objekt innehåller en name egenskap.

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

Kommentar

I de ursprungliga JSON-data sorteras inte objekten.

Det första exemplet innehåller en fråga som endast name returnerar egenskapen från alla objekt sorterade i alfabetisk ordning.

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

I nästa exempel ingår en fråga som använder OFFSET LIMIT -satsen för att hoppa över det första objektet. Gränsen är inställd på antalet objekt i containern för att returnera alla möjliga återstående värden. I det här exemplet hoppar frågan över ett objekt och returnerar de återstående fyra (av en gräns på fem).

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

Det här sista exemplet innehåller en fråga som använder OFFSET LIMIT -satsen för att returnera en delmängd av de matchande objekten genom att hoppa över ett objekt och ta nästa tre.

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

Kommentarer

  • OFFSET Både antalet och antalet LIMIT krävs i OFFSET LIMIT -satsen. Om en valfri ORDER BY sats används skapas resultatuppsättningen genom att hoppa över de ordnade värdena. Annars returnerar frågan en fast ordning med värden.
  • RU-avgiften för en fråga med OFFSET LIMIT ökar när antalet villkor som förskjuts ökar. För frågor som har flera sidor med resultat rekommenderar vi vanligtvis att du använder fortsättningstoken. Fortsättningstoken är ett "bokmärke" för den plats där frågan senare kan återupptas. Om du använder OFFSET LIMITfinns det inget "bokmärke". Om du vill returnera frågans nästa sida måste du börja från början.
  • Du bör använda OFFSET LIMIT för fall då du vill hoppa över objekt helt och spara klientresurser. Du bör till exempel använda OFFSET LIMIT om du vill hoppa till det 1000:e frågeresultatet och inte behöver visa resultat 1 till 999. På serverdelen OFFSET LIMIT läser du fortfarande in varje objekt, inklusive de objekt som hoppas över. Prestandafördelen mäts för att minska klientresurserna genom att undvika bearbetning av objekt som inte behövs.