¿DynamoDB admite índices secundarios?

Sí. DynamoDB admite dos tipos de índices secundarios. Un índice secundario global (GSI) tiene su propia clave de partición/ordenación y su propia capacidad (20 por tabla por defecto, eventualmente consistente). Un índice secundario local (LSI) comparte la clave de partición de la tabla con una clave de ordenación distinta, admite consistencia fuerte y debe definirse al crear la tabla.

Índice secundario global (GSI)

  • Clave de partición y de ordenación propias, independientes de las de la tabla.
  • Rendimiento aprovisionado propio (o capacidad bajo demanda).
  • Lecturas solo eventualmente consistentes.
  • Se añade o se elimina en cualquier momento; cuota por defecto de 20 por tabla.

Un GSI es la forma de buscar Items por un atributo que está fuera de la clave principal de la tabla.

Índice secundario local (LSI)

  • Comparte la clave de partición de la tabla, con una clave de ordenación distinta.
  • Comparte el rendimiento de la tabla.
  • Admite lecturas fuertemente consistentes.
  • Debe crearse al crear la tabla y no puede añadirse después.

Las dos diferencias que puedes medir

Una lectura sobre un GSI no se degrada en silencio cuando pides consistencia fuerte. Falla:

ValidationException: Consistent reads are not supported on global secondary indexes
HTTP 400

La misma consulta con ConsistentRead: true contra un LSI tiene éxito, e informa de ConsumedCapacity 1.0 donde la lectura eventualmente consistente del mismo Item informa de 0.5. La consistencia fuerte está disponible en un LSI, al doble de unidades de lectura.

La segunda diferencia está en las escrituras, y es la que aparece en la factura. Metiendo un mismo Item de 920 bytes en tres tablas que solo se diferencian en cuántos GSI llevan:

0 GSIs   ConsumedCapacity 1   table 1
1 GSI    ConsumedCapacity 2   table 1, gsi1 1
2 GSIs   ConsumedCapacity 3   table 1, gsi1 1, gsi2 1

Cada GSI que proyecta un atributo modificado es otra escritura que pagas. AWS enuncia la regla que muestran los números: el coste de escritura es "the sum of write capacity units consumed by writing to the base table and those consumed by updating the global secondary indexes". Una proyección KEYS_ONLY es la manera de mantener pequeña esa segunda escritura.

Elegir entre ambos

Recurre a un GSI para nuevos patrones de acceso y flexibilidad; recurre a un LSI cuando necesites consistencia fuerte sobre una ordenación alternativa dentro de la misma partición.

Profundiza

Compáralos en GSI vs LSI y mira las proyecciones de índice. Descarga DynoTable para consultar a través de tus índices.

Referencias

Verificado por última vez el 2026-07-13 contra la documentación oficial de AWS enlazada arriba; cuotas revisadas de nuevo el 2026-07-28.

La cadena de error y los valores de ConsumedCapacity se capturaron el 2026-07-28 contra DynamoDB Local 3.3.0 mediante @aws-sdk/client-dynamodb 3.1095.0 y son la salida propia del motor.

Trabaja con DynamoDB sin la Consola

Un cliente de escritorio rápido para DynamoDB que ejecuta el SQL real que DynamoDB no puede — JOINs, GROUP BY, agregaciones — con edición visual y un agente de IA con tus propias claves de Bedrock.

Prueba gratuita de 30 días, sin tarjeta — después, el plan Free sin límite de tiempo.