Otros aspectos del trabajo con la operación Query
Limitación del número de elementos del conjunto de resultados
Con la operación Query
, puede limitar el número de elementos que lee. Para ello, establezca el parámetro Limit
en el número máximo de elementos que desee.
Por ejemplo, suponga que utiliza Query
en una tabla con un valor de Limit
de 6
y sin expresión de filtro. El resultado de Query
contendrá los seis primeros elementos de la tabla que coincidan con la expresión de condición de clave de la solicitud.
Ahora, suponga que agrega una expresión de filtro a Query
. En este caso, DynamoDB lee hasta seis elementos y, a continuación, devuelve solo aquellos que coinciden con la expresión de filtro. El resultado final de Query
contiene seis elementos o menos, aunque más elementos hubieran coincidido con la expresión de filtro si DynamoDB hubiera seguido leyendo más elementos.
Recuento de los elementos en los resultados
Además de los elementos que coinciden con los criterios, la respuesta de Query
contiene las entradas siguientes:
-
ScannedCount
: número de elementos que coinciden con la expresión de condición de clave antes de aplicar una expresión de filtro (si la hay). -
Count
: número de elementos restantes después de aplicar una expresión de filtro (si la hay).
nota
Si no se utiliza una expresión de filtro, ScannedCount
y Count
tendrán el mismo valor.
Si el tamaño del conjunto de resultados de Query
es mayor que 1 MB, entonces ScannedCount
y Count
representarán únicamente un recuento parcial de los elementos totales. Deberá llevar a cabo varias operaciones Query
para recuperar todos los resultados (consulte Paginación de los resultados de la consulta de la tabla).
Cada respuesta de Query
contendrá los valores de ScannedCount
y Count
de los elementos que se han procesado en esa solicitud Query
concreta. Para obtener totales globales para todas las solicitudes Query
, puede llevar un recuento total de ScannedCount
y Count
.
Unidades de capacidad consumidas por la consulta
Puede utilizar cualquier tabla o índice secundario Query
, siempre que proporcione el nombre del atributo de clave de partición y un valor único para ese atributo. Query
devuelve todos los elementos que contienen ese valor de clave de partición. Opcionalmente, puede proporcionar un atributo de clave de clasificación y utilizar un operador de comparación para limitar los resultados de la búsqueda. Query
Las operaciones de la API consumen unidades de capacidad de lectura, como se indica a continuación.
Si Query se aplica a... |
DynamoDB consume unidades de capacidad de lectura de... |
---|---|
Tabla | La capacidad de lectura aprovisionada de la tabla. |
Índice secundario global | La capacidad de lectura aprovisionada del índice. |
Índice secundario local | La capacidad de lectura aprovisionada de la tabla base. |
De forma predeterminada, una operación Query
no devuelve datos sobre la cantidad de capacidad de lectura que consume. Sin embargo, puede especificar el parámetro ReturnConsumedCapacity
en una solicitud Query
para obtener esta información. A continuación se muestran los ajustes válidos de ReturnConsumedCapacity
:
-
NONE
: no se devuelven datos de capacidad consumida. (Esta es la opción predeterminada.) -
TOTAL
: la respuesta incluye el número total de unidades de capacidad de lectura consumidas. -
INDEXES
: la respuesta muestra el número total de unidades de capacidad de lectura consumidas, así como la capacidad consumida de cada tabla e índice a los que se ha obtenido acceso.
DynamoDB calcula el número de unidades de capacidad de lectura consumidas según el número de elementos y el tamaño de dichos elementos, no según la cantidad de datos que se devuelven a una aplicación. Por este motivo, el número de unidades de capacidad consumidas es el mismo si se solicitan todos los atributos (el comportamiento predeterminado) o solo algunos de ellos (mediante una expresión de proyección). El número también es el mismo tanto si se utiliza una expresión de filtro como si no. Query
consume una unidad de capacidad de lectura mínima para realizar una lectura altamente coherente por segundo o dos lecturas coherentes posteriores por segundo para un elemento de hasta 4 KB. Para leer un elemento mayor que 4 KB, DynamoDB necesita unidades de solicitud de lectura adicionales. Con las tablas vacías y las tablas muy grandes con una cantidad escasa de claves de partición, es posible que se cobren algunas RCU adicionales además de la cantidad de datos consultados. Esto cubre el costo de atender la solicitud Query
, incluso si no hay datos.
Coherencia de lectura para la consulta
De forma predeterminada, una operación Query
lleva a cabo lecturas consistentes finales. Esto significa que los resultados de Query
podrían no reflejar los cambios provocados por operaciones PutItem
o UpdateItem
realizadas recientemente. Para obtener más información, consulte Coherencia de lectura.
Si requiere lecturas de consistencia alta, establezca el parámetro ConsistentRead
en true
en la solicitud Query
.