Juan Santamaría

Juan Santamaría

Programador web

Crear índices en MongoDB

Cuando tienes un proyecto en el cual almacenas una gran cantidad de registros, seguramente en su momento optaras por utilizar MongoDB para almacenar los datos como hice yo en su día.

En cuanto al almacenamiento todo es un camino de rosas pero cuando viene la parte de ejecutar consultas desde PHP (sobre todo de búsqueda) y la base de datos ha crecido en una cantidad astronómica se puede volver un infierno y para eso están los índices.

Creando índices en MongoDB para optimizar consultas

A la hora de crear un índice podremos hacerlo sobre un campo o sobre varios. Para ponernos en situación vamos a imaginarnos que tenemos una base de datos llamada usuarios con una colección llamada datosusuario y que queremos crear el índice sobre el campo id_usuario. En nuestro caso vamos a crear índices de ordenación pero hay otros tipos como los índices de texto,geoespaciales o de tipo hash.

Para ello lo primero será conectarnos por SSH a nuestro servidor y abrir MongoDB:

mongo ip:port/usuarios -u usuariodb -p passdb

Recordar cambiar los datos ip,port,usuarios (es el nombre de la base de datos),usuariodb  y passdb por los vuestros y ahora pasaremos a crear el indice que en este caso es sobre la colección datosusuario:

db.datosusuario.createIndex({"id_usuario" : 1})

El número puede ser 1 (ascendente) o -1 (descendente). Podríamos ir añadiendo campos al índice y por ejemplo hacer que ordene por id_usuario en ascendente y por monedas en descedente:

db.datosusuario.createIndex({"id_usuario" : 1,"monedas":-1})

Con estas simples consultas mejorará notablemente la rapidez de las consultas. Aún así también debéis tener en cuenta que los índices ocupan espacio y si os ponéis a lo loco a crearlos puede ser peor el remedio que la enfermedad. Cualquier duda dejar un comentario 🙂

COMPARTE TU OPINIÓN

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Uso de cookies

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies

ACEPTAR
Aviso de cookies