🗂️ Crear índices (Indexing)
Los índices en MongoDB son estructuras especiales que mejoran la velocidad de las consultas
(find(), aggregate(), etc.) en colecciones grandes.
Sin índices, MongoDB tendría que escanear todos los documentos, lo que es lento en bases de datos con muchos registros.
🔹 1️⃣ Concepto de índice
Un índice almacena información sobre un campo o combinación de campos, permitiendo búsquedas rápidas y ordenamiento eficiente.
- Se puede crear en uno o varios campos.
- Los índices ocupan espacio adicional en disco y memoria.
- Se recomienda crear índices en campos que se consultan frecuentemente.
🔹 2️⃣ Crear un índice simple
Ejemplo: queremos un índice en el campo nombre de la colección productos:
db.productos.createIndex({ nombre: 1 })
Aquí 1 indica orden ascendente.
Para descendente usaríamos -1.
🔹 3️⃣ Índice compuesto
Si queremos mejorar consultas que usan varios campos:
db.productos.createIndex({ categoria: 1, precio: -1 })
MongoDB optimizará consultas que filtren por categoria y ordenen por precio.
🔹 4️⃣ Índices únicos
Podemos garantizar que no haya valores duplicados en un campo usando unique: true:
db.usuarios.createIndex({ email: 1 }, { unique: true })
MongoDB rechazará documentos con el mismo email.
🔹 5️⃣ Listar y eliminar índices
Para ver todos los índices de una colección:
db.productos.getIndexes()
Para eliminar un índice:
db.productos.dropIndex("nombre_1")
🧠 6️⃣ Buenas prácticas
- Crea índices solo en campos consultados frecuentemente.
- Evita demasiados índices en colecciones grandes, ya que ralentizan inserciones y actualizaciones.
- Usa índices compuestos cuando las consultas combinan varios campos.
- Aplica
uniquepara campos que deben ser exclusivos. - Revisa periódicamente índices con
getIndexes()para optimizar rendimiento.
🧭 7️⃣ Resumen rápido
- Los índices mejoran la velocidad de consultas en MongoDB.
- Pueden ser simples, compuestos o únicos.
- Es importante balancear entre rendimiento de lectura y escritura.
- Se gestionan con
createIndex(),getIndexes()ydropIndex().
0 Comentarios
Si desea contactar comigo, lo puede hacer atravez deste formulario gracias