Compartir vía


OFFSET LIMIT (consulta NoSQL)

SE APLICA A: NoSQL

La cláusula OFFSET LIMIT es una cláusula opcional para omitir y luego tomar cierto número de valores de la consulta. El recuento de OFFSET y el recuento de LIMIT son necesarios en la cláusula OFFSET LIMIT.

Cuando OFFSET LIMIT se usa junto con una cláusula ORDER BY, el conjunto de resultados se genera mediante una operación Skip y Take en los valores ordenados. Si no se usa ninguna cláusula ORDER BY, se produce un orden determinista de valores.

Sintaxis

OFFSET <offset_amount> LIMIT <limit_amount>

Argumentos

Descripción
<offset_amount> Especifica el número entero de elementos que los resultados de la consulta deben omitir.
<limit_amount> Especifica el número entero de elementos que los resultados de la consulta deben incluir.

Ejemplos

Para el ejemplo de esta sección, se usa este conjunto de referencia de elementos. Cada elemento incluye una propiedad 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"
  }
]

Nota:

En los datos JSON originales, los elementos no se ordenan.

En el primer ejemplo se incluye una consulta que devuelve solo la name propiedad de todos los elementos ordenados en orden alfabético.

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

En este ejemplo siguiente se incluye una consulta mediante la OFFSET LIMIT cláusula para omitir el primer elemento. El límite se establece en el número de elementos del contenedor para devolver todos los valores restantes posibles. En este ejemplo, la consulta omite un elemento y devuelve los cuatro restantes (fuera de un límite de cinco).

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

En este ejemplo final se incluye una consulta mediante la OFFSET LIMIT cláusula para devolver un subconjunto de los elementos coincidentes omitiendo un elemento y tomando los tres siguientes.

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

Comentarios

  • Se necesitan los valores de OFFSET y LIMIT en la cláusula OFFSET LIMIT. Si se usa una cláusula ORDER BY opcional, se genera el conjunto de resultados mediante la omisión de los valores ordenados. En caso contrario, la consulta devuelve un orden fijo de valores.
  • El cargo por RU de una consulta con OFFSET LIMIT aumenta a medida que aumente el número de términos que se van a desplazar. En el caso de las consultas que tienen varias páginas de resultados, normalmente se recomienda usar tokens de continuación. Los tokens de continuación son un "marcador" del lugar donde se puede reanudar la consulta más adelante. Si usa OFFSET LIMIT, no hay un “marcador”. Si desea devolver la página siguiente de la consulta, tendría que empezar desde el principio.
  • Debe usar OFFSET LIMIT para los casos en los que quiera omitir elementos completamente y guardar los recursos del cliente. Por ejemplo, use OFFSET LIMIT si desea ir al resultado número 1000 de la consulta y no necesita ver los resultados 1 a 999. En el back-end, OFFSET LIMIT sigue cargando todos los elementos, incluidos los que se omiten. La ventaja en cuanto al rendimiento se mide como una reducción de los recursos de cliente, ya que se evita procesar elementos innecesarios.