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
yLIMIT
en la cláusulaOFFSET LIMIT
. Si se usa una cláusulaORDER 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 usaOFFSET 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, useOFFSET 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.