Un índice es una estructura ordenada que permite localizar documentos sin examinar toda la colección. MongoDB mantiene claves extraídas de los documentos junto con referencias a ellos.
Texto
query
↓
index bounds
↓
claves candidatas
↓
documentos necesarios
Un índice acelera determinadas query shapes, pero consume almacenamiento, memoria y trabajo en cada inserción, actualización y eliminación.
Toda colección normal tiene un índice unique sobre _id. Permite identificar documentos, pero no sirve automáticamente a queries por tenant, estado o fecha.
Buscar por _id sin businessId tampoco sustituye autorización.
Es adecuado cuando la query principal filtra por ese campo. Si el barcode es único por negocio, un compound unique index puede reflejar mejor la regla:
Soporta un listado por negocio en orden descendente. La dirección completa puede recorrerse en sentido inverso, pero combinaciones parciales deben verificarse.
Si filtro y campos devueltos están en el índice, una query puede ser covered. Añadir campos únicamente para cubrir aumenta tamaño y write amplification. Debe justificarse por frecuencia y beneficio medido.
Las partes activas de los índices compiten por cache. Que el dataset total no quepa en RAM no implica fallo, pero un working set de índices demasiado grande aumenta I/O y evictions.
Un índice hidden puede mantenerse sin ser elegible normalmente por el planner. Sirve para evaluar el impacto de retirarlo antes de eliminarlo, según soporte de versión.
Sigue consumiendo escritura y almacenamiento mientras está hidden.
el compound puede cubrir algunas queries del índice corto por prefix. Pero unicidad, sparse/partial, collation y uso de sort pueden impedir considerarlo redundante automáticamente.
Los índices interactúan con shard key y targeting. Una query bien indexada pero sin shard key puede ejecutarse en múltiples shards. Un unique index en colección sharded tiene reglas adicionales.
Un índice intercambia coste de escritura y memoria por acceso eficiente. Su unidad de diseño es la query shape, no el campo individual. Todo índice debe tener un propósito verificable, métricas de uso y una estrategia de lifecycle.