sql >> Base de Datos >  >> NoSQL >> MongoDB

Índice en MongoDB

El índice es una forma típica de acelerar las consultas en un sistema de base de datos normal. No hay diferencia entre MongoDB y un sistema de base de datos basado en documentos. Este artículo brinda información sobre el índice en MongoDB, para la optimización de consultas.

Índice en Mongo:

Predeterminado

_id es un objeto ObjectId, tipo BSON de 12 bytes que garantiza la unicidad dentro de la colección. El ObjectId se genera en función de la marca de tiempo, la ID de la máquina, la ID del proceso y un contador incremental local del proceso.

Campo único

Para un índice de un solo campo y operaciones de clasificación, el orden de clasificación (es decir, ascendente o descendente) de la clave de índice no importa porque MongoDB puede atravesar el índice en cualquier dirección. El valor de índice es el tipo de índice. Por ejemplo, 1 indica orden ascendente y -1 especifica el orden descendente.

db.friends.createIndex( { "name" : 1 } )

Campo compuesto

El orden de los campos enumerados en un índice compuesto tiene importancia. Por ejemplo, si un índice compuesto consta de { ID de usuario:1, puntuación:-1 }, el índice ordena primero por ID de usuario y luego, dentro de cada valor de ID de usuario, ordena por puntuación.

db.products.createIndex( { "item": 1, "stock": 1 } )

Clave múltiple

MongoDB usa múltiples índices para indexar el contenido en una matriz. MongoDB crea entradas de índice separadas para cada elemento de la matriz. No necesita crear explícitamente varias claves.

Índice de texto

Una colección puede tener como máximo un índice de texto.
Costo de rendimiento para el índice de texto:
los índices de texto pueden ser grandes. Contienen una entrada de índice para cada palabra post-derivada única en cada campo indexado para cada documento insertado.
los índices de texto tendrán un impacto en el rendimiento de la inserción porque MongoDB debe agregar una entrada de índice para cada palabra post-derivada única en cada campo indexado de cada nuevo documento de origen.

db.reviews.createIndex( { comments: "text" } )

Índice hash

Consulta el contenido por su valor hash. El hash es una función que se calcula por su valor. El valor hash está diseñado para ser un valor distinto. La única ventaja es que es tan rápido, que toma O (1) como máximo, pero por contrato, el árbol de búsqueda binaria normal tomará O (Log (N)). Hash será teóricamente más rápido que la implementación normal del árbol de búsqueda binaria. Pero la desventaja es que la búsqueda de rango de ejecución del índice hash será extremadamente lenta que el índice normal.

Este es un ejemplo en python para construir un índice hash

db.active.createIndex( { a: "hashed" } )