馃殌 Optimizaci贸n de consultas con 铆ndices

Optimizaci贸n de consultas en MongoDB

馃殌 Optimizaci贸n de consultas con 铆ndices

En MongoDB, los 铆ndices son fundamentales para mejorar el rendimiento de tus consultas. Sin 铆ndices, cada b煤squeda requiere escanear todos los documentos de la colecci贸n, lo que se vuelve lento cuando la base de datos crece.


馃敼 1️⃣ C贸mo los 铆ndices optimizan las consultas

Los 铆ndices act煤an como un mapa o tabla de contenido de tu colecci贸n, permitiendo que MongoDB encuentre documentos r谩pidamente sin recorrer cada registro.

// Consulta sin 铆ndice
db.productos.find({ nombre: "Teclado mec谩nico" })

Esta consulta escanear谩 todos los documentos. Si existe un 铆ndice sobre nombre, MongoDB acceder谩 directamente a los documentos relevantes.

// Consulta con 铆ndice
db.productos.createIndex({ nombre: 1 })
db.productos.find({ nombre: "Teclado mec谩nico" })

馃敼 2️⃣ Uso de 铆ndices compuestos

Para consultas que filtran por varios campos, un 铆ndice compuesto mejora significativamente la velocidad:

// 脥ndice compuesto
db.productos.createIndex({ categoria: 1, precio: -1 })

// Consulta optimizada usando ese 铆ndice
db.productos.find({ categoria: "perif茅ricos" }).sort({ precio: -1 })

MongoDB puede utilizar este 铆ndice tanto para filtrar por categoria como para ordenar por precio sin necesidad de ordenar en memoria.


馃敼 3️⃣ Evaluar rendimiento con explain()

Antes de crear un 铆ndice, es 煤til comprobar c贸mo MongoDB planea ejecutar una consulta:

// Ver el plan de ejecuci贸n
db.productos.find({ nombre: "Teclado mec谩nico" }).explain("executionStats")

F铆jate en el n煤mero de documentos examinados (totalDocsExamined). Si es alto, un 铆ndice puede reducir este n煤mero y acelerar la consulta.


馃敼 4️⃣ Buenas pr谩cticas para optimizaci贸n

  • Crea 铆ndices solo sobre campos que usas frecuentemente en filtros o ordenamientos.
  • Evita 铆ndices redundantes; revisa db.collection.getIndexes() peri贸dicamente.
  • Usa 铆ndices compuestos para consultas frecuentes que combinan varios campos.
  • Considera 铆ndices de texto para b煤squedas dentro de strings grandes.
  • Revisa siempre el plan de ejecuci贸n con explain() antes y despu茅s de crear 铆ndices.
  • Ten en cuenta que los 铆ndices ocupan espacio adicional y pueden afectar inserciones y actualizaciones.

馃Л 5️⃣ Resumen r谩pido

  • Los 铆ndices aceleran consultas filtrando directamente los documentos relevantes.
  • 脥ndices simples y compuestos optimizan b煤squedas y ordenamientos frecuentes.
  • Eval煤a siempre con explain() para medir el impacto de los 铆ndices.
  • Planifica cuidadosamente los 铆ndices para no afectar la escritura ni ocupar espacio innecesario.

Publicar un comentario

0 Comentarios