Docs Menu
Docs Home
/ /

Crea índices para apoyar tus consultas

Un índice cubre un query cuando el índice contiene todos los campos escaneados por el query. Un query cubierto escanea el índice y no la colección, lo que mejora el rendimiento del query.

Los índices también pueden admitir parcialmente los queries si un subconjunto de los campos consultados está indexado.

Una única colección puede tener un máximo de 64 índices. Sin embargo, un exceso de índices puede degradar el rendimiento antes de que se alcance ese límite. Para colecciones con una alta proporción de escritura a lectura, los índices pueden degradar el rendimiento porque cada inserción también debe actualizar los índices.

1

Para identificar los patrones de query comunes en tu aplicación, utiliza $queryStats etapa de agregación. $queryStats informa métricas para formas del query, que agrupan las consultas según los campos compartidos.

2

Después de averiguar en qué campos tu aplicación hace query con frecuencia, puedes crear índices para facilitar las queries en esos campos. Para más información, consulte ejemplo.

3

Una vez que la aplicación comience a usar índices, se puede analizar la efectividad de los índices. Para ver las estadísticas y el uso del índice, se puede:

  • Utiliza la etapa de agregación $indexStats.

  • Para implementaciones de MongoDB Atlas, consulta Índices en la interfaz de usuario de MongoDB Atlas.

Considera borrar los índices no utilizados para optimizar el rendimiento de la aplicación. Para obtener más información, consulta Remover índices innecesarios.

Repite este procedimiento periódicamente para asegurarte de que tus índices brinden soporte a su carga de trabajo actual.

Si la aplicación solo realiza queries de una única clave en una colección determinada, entonces se necesita crear un índice de clave única para esa colección. Por ejemplo, se puede crear un índice en category en la colección product:

db.products.createIndex( { category: 1 } )

El índice anterior admite este query:

db.products.find( { category: "electronics" } )

Si la aplicación realiza queries tanto sobre una clave única como sobre varias claves, un índice compuesto es más eficiente que un índice de clave única. Por ejemplo, se puede crear un índice en los campos category, item y location:

db.products.createIndex( { category: 1, item: 1, location: 1 } )

Un índice compuesto admite queries sobre los prefijos del índice, que son los subconjuntos iniciales de los campos indexados. Por ejemplo, el índice precedente admite estos queries:

db.products.find( { category: "electronics" } )
db.products.find( { category: "electronics", item: "television" } )

Para obtener más información y consideraciones sobre el rendimiento de los prefijos de índice, consulta Prefijos de índice.

Para los datos almacenados en MongoDB Atlas, puedes respaldar la búsqueda de texto completo con los índices de búsqueda de Atlas. Para obtener más información, consulte Crear un índice de búsqueda de Atlas.

Para las implementaciones autogestionadas (que no son de Atlas), MongoDB proporciona un tipo de índice text que admite la búsqueda de contenido de string en una colección. Para aprender más sobre los índices de texto autogestionados, consulta Índices de texto en implementaciones autogestionadas.

Los índices de búsqueda vectorial admiten queries sobre incrustaciones vectoriales. Para crear índices de búsqueda vectorial, consulta Campos de índice para la búsqueda vectorial.

Para utilizar un índice para las comparaciones de cadenas, una operación también debe especificar la misma intercalación. Es decir, un índice con una intercalación no puede soportar una operación que realice comparaciones de strings en los campos indexados si la operación especifica una intercalación diferente.

Advertencia

Las claves de índice sensibles a la intercalación pueden ser más grandes que las claves de índice que no la utilizan, ya que los índices configurados con intercalación utilizan claves de intercalación ICU para lograr un orden de clasificación.

Volver

Aplicar patrones

En esta página