¿Cómo se cuentan los Items en DynamoDB?
Usa Select: 'COUNT' en una Query o un Scan para contar los Items que coinciden sin devolverlos. Cada respuesta cuenta solo hasta 1 MB escaneado, así que tienes que paginar con LastEvaluatedKey y sumar los valores de Count para el total completo. Para un total aproximado de la tabla, lee ItemCount de DescribeTable. Para un recuento agrupado — o un SUM/AVG sobre una columna — el SQL Workbench de DynoTable ejecuta COUNT y GROUP BY como una sola consulta y se encarga de la paginación por ti.
Contar exactamente los Items coincidentes
Pon Select a COUNT en una Query (para una clave de partición) o un Scan (tabla entera). La respuesta devuelve Count y ScannedCount pero ningún dato de los Items. Si los datos escaneados superan 1 MB, la operación se detiene y devuelve LastEvaluatedKey — sigue llamando y sumando Count hasta que no esté. Ojo: contar no es más barato que leer: COUNT consume la misma capacidad de lectura que consumiría devolver los Items.
Count frente a ScannedCount
Count— Items que coinciden con tus condiciones de clave o filtro en esta página.ScannedCount— Items examinados antes de filtrar. Una expresión de filtro estrecha los resultados pero no reduce lo que se escaneó (ni su coste).
COUNT no es un descuento, medido
«Contar cuesta lo mismo que leer» es fácil de afirmar y fácil de dudar, así que aquí lo tienes sobre una tabla con 40 Items de unos 3 KB cada uno (120.700 bytes en total), con cada llamada hecha con ReturnConsumedCapacity: 'TOTAL':
| Petición | Count | ScannedCount | ConsumedCapacity |
|---|---|---|---|
Query con Select: 'COUNT' | 40 | 40 | 15 |
Query devolviendo los Items | 40 | 40 | 15 |
Scan, Select: 'COUNT', filtro que coincide con la mitad | 20 | 40 | 15 |
La tercera fila es la que hay que mirar. El filtro reduce Count a la mitad, deja ScannedCount igual y no mueve la factura nada.
15 es el número que habrías predicho: 120.700 bytes redondean hacia arriba a 30 unidades de lectura de cuatro kilobytes, divididas entre dos porque una Query es eventualmente consistente salvo que pidas otra cosa.
La aproximación barata
DescribeTable devuelve ItemCount, una estimación de toda la tabla que se actualiza aproximadamente cada seis horas. Es gratis e instantánea, pero no es en tiempo real — buena para paneles, no para totales exactos.
Un aviso si pruebas contra DynamoDB Local: allí ItemCount se actualiza al instante. Escribir 40 Items y llamar a DescribeTable devuelve 40 de inmediato. El servicio real no lo hará, así que una lógica de frescura que pasa en local puede equivocarse en seis horas en producción.
Contar y agregar con DynoTable
La API cruda te da COUNT pero ni GROUP BY, ni SUM, ni AVG — agrupar y sumar ocurre normalmente en el código de tu aplicación. El SQL Workbench de DynoTable los añade: escribe SELECT COUNT(*), SUM(total) o un recuento agrupado, y él ejecuta el bucle de paginación por ti, afinando el número según llegan las páginas. Sigue leyendo a través de DynamoDB, así que se aplica el mismo coste de capacidad de lectura — pero escribes una consulta en lugar de un bucle, y obtienes resultados agrupados y sumados que la API no puede devolver directamente.
Profundiza
Lee contar, sumar y agregar en DynamoDB y construye consultas de recuento con el Generador de expresiones. Descarga DynoTable para ejecutar recuentos y agregados (COUNT, SUM, GROUP BY) contra tus tablas.
Referencias
- Query — Amazon DynamoDB API Reference
- Scan — Amazon DynamoDB API Reference
- TableDescription — Amazon DynamoDB API Reference
Verificado por última vez el 2026-07-13 contra la documentación oficial de AWS enlazada arriba.
Las cifras de capacidad se reprodujeron el 2026-07-28 contra DynamoDB Local 3.3.0 (amazon/dynamodb-local:latest) mediante @aws-sdk/client-dynamodb 3.1095.0. DynamoDB Local no es el servicio; la divergencia de ItemCount señalada arriba es uno de los puntos en los que difieren.