Come si contano gli Item in DynamoDB?

Usa Select: 'COUNT' su una Query o uno Scan per contare gli Item corrispondenti senza restituirli. Ogni risposta conta solo fino a 1 MB scansionato, quindi devi paginare con LastEvaluatedKey e sommare i valori di Count per un totale completo. Per un totale approssimativo della tabella, leggi ItemCount da DescribeTable. Per un conteggio raggruppato — o una SUM/AVG su una colonna — il SQL Workbench di DynoTable esegue COUNT e GROUP BY come una sola query e gestisce la paginazione al posto tuo.

Contare esattamente gli Item corrispondenti

Imposta Select su COUNT in una Query (per una chiave di partizione) o in uno Scan (intera tabella). La risposta restituisce Count e ScannedCount ma nessun dato degli Item. Se i dati scansionati superano 1 MB, l'operazione si ferma e restituisce LastEvaluatedKey — continua a chiamare e a sommare Count finché non è assente. Nota che contare non è più economico che leggere: COUNT consuma la stessa capacità di lettura che consumerebbe restituire gli Item.

Count vs ScannedCount

  • Count — gli Item che corrispondono alle tue condizioni di chiave/filtro in questa pagina.
  • ScannedCount — gli Item esaminati prima del filtro. Una filter expression restringe i risultati ma non riduce ciò che è stato scansionato (né il suo costo).

COUNT non è uno sconto, misurato

"Contare costa quanto leggere" è facile da affermare e facile da mettere in dubbio, quindi eccolo su una tabella che contiene 40 Item da circa 3 KB ciascuno (120.700 byte in totale), con ogni chiamata effettuata con ReturnConsumedCapacity: 'TOTAL':

RichiestaCountScannedCountConsumedCapacity
Query con Select: 'COUNT'404015
Query che restituisce gli Item404015
Scan, Select: 'COUNT', filtro che ne prende metà204015

La terza riga è quella da guardare. Il filtro dimezza Count, lascia stare ScannedCount e muove il conto di zero.

15 è il numero che avresti previsto: 120.700 byte arrotondano a 30 unità di lettura da quattro kilobyte, dimezzate perché una Query è a coerenza eventuale se non chiedi diversamente.

L'approssimazione economica

DescribeTable restituisce ItemCount, una stima a livello di tabella aggiornata circa ogni sei ore. È gratis e istantanea, ma non in tempo reale — buona per le dashboard, non per i totali esatti.

Un avvertimento se fai i test contro DynamoDB Local: aggiorna ItemCount immediatamente. Scrivere 40 Item e chiamare DescribeTable lì restituisce subito 40. Il servizio reale no, quindi una logica sulla freschezza che passa in locale può essere sbagliata di sei ore in produzione.

Contare e aggregare con DynoTable

L'API grezza ti dà COUNT ma non GROUP BY, SUM o AVG — raggruppare e sommare normalmente avviene nel codice della tua applicazione. Il SQL Workbench di DynoTable li aggiunge: scrivi SELECT COUNT(*), SUM(total) o un conteggio raggruppato, e lui esegue il loop di paginazione al posto tuo, affinando il numero man mano che le pagine arrivano. Legge comunque attraverso DynamoDB, quindi vale lo stesso costo in capacità di lettura — ma scrivi una query invece di un loop, e ottieni risultati raggruppati e sommati che l'API non può restituire direttamente.

Approfondisci

Leggi contare, sommare e aggregare in DynamoDB e costruisci query di conteggio con il Generatore di espressioni. Scarica DynoTable per eseguire conteggi e aggregati (COUNT, SUM, GROUP BY) sulle tue tabelle.

Riferimenti

Ultima verifica 2026-07-13 rispetto alla documentazione ufficiale AWS collegata sopra.

Le cifre di capacità sono state riprodotte il 2026-07-28 contro DynamoDB Local 3.3.0 (amazon/dynamodb-local:latest) tramite @aws-sdk/client-dynamodb 3.1095.0. DynamoDB Local non è il servizio; la divergenza su ItemCount notata sopra è uno dei punti in cui differiscono.

Lavora con DynamoDB senza la Console

Un client desktop veloce per DynamoDB che esegue il vero SQL che DynamoDB non può — JOINs, GROUP BY, aggregazioni — con modifica visuale e un agente AI sulle tue chiavi Bedrock.

Prova gratuita di 30 giorni, senza carta di credito — poi il piano Free senza limiti di tempo.