Els índexs són una part fonamental de qualsevol base de dades, ja que permeten millorar significativament el rendiment de les consultes. En aquest tema, aprendrem què són els índexs, com crear-los a MongoDB i com utilitzar-los de manera efectiva.

Què és un Índex?

Un índex és una estructura de dades que millora la velocitat de les operacions de lectura en una col·lecció. Els índexs permeten a MongoDB trobar documents amb més rapidesa i eficiència, evitant la necessitat de fer una cerca completa en cada document de la col·lecció.

Avantatges dels Índexs

  • Millora del Rendiment: Redueix el temps de resposta de les consultes.
  • Optimització de Consultes: Permet a MongoDB utilitzar el millor camí per accedir a les dades.

Desavantatges dels Índexs

  • Espai Addicional: Els índexs ocupen espai addicional en el disc.
  • Cost d'Actualització: Les operacions d'escriptura poden ser més lentes, ja que els índexs han de ser actualitzats.

Creant Índexs a MongoDB

Índexs Simples

Un índex simple és un índex en un sol camp. Per crear un índex simple, utilitzem el mètode createIndex().

// Creant un índex en el camp "name"
db.collection.createIndex({ name: 1 });

En aquest exemple, estem creant un índex ascendent en el camp name. El valor 1 indica que l'índex és ascendent. Si volguéssim un índex descendent, utilitzaríem -1.

Índexs Compostos

Un índex compost és un índex en múltiples camps. Això pot ser útil quan les consultes sovint filtren per més d'un camp.

// Creant un índex compost en els camps "name" i "age"
db.collection.createIndex({ name: 1, age: -1 });

En aquest exemple, estem creant un índex ascendent en el camp name i un índex descendent en el camp age.

Índexs Únics

Un índex únic assegura que els valors en el camp indexat siguin únics en tota la col·lecció.

// Creant un índex únic en el camp "email"
db.collection.createIndex({ email: 1 }, { unique: true });

Aquest índex assegura que no hi hagi dos documents amb el mateix valor en el camp email.

Verificant Índexs

Podem veure els índexs existents en una col·lecció utilitzant el mètode getIndexes().

// Veient tots els índexs en una col·lecció
db.collection.getIndexes();

Aquest mètode retorna una llista de tots els índexs creats en la col·lecció.

Eliminant Índexs

Si necessitem eliminar un índex, podem utilitzar el mètode dropIndex().

// Eliminant un índex en el camp "name"
db.collection.dropIndex({ name: 1 });

Aquest mètode elimina l'índex especificat en el camp name.

Exercicis Pràctics

Exercici 1: Creant un Índex Simple

  1. Crea una col·lecció anomenada users.
  2. Insereix diversos documents amb els camps name i age.
  3. Crea un índex en el camp name.
// Solució
db.users.insertMany([
  { name: "Alice", age: 25 },
  { name: "Bob", age: 30 },
  { name: "Charlie", age: 35 }
]);

db.users.createIndex({ name: 1 });

Exercici 2: Creant un Índex Compost

  1. Crea un índex compost en els camps name i age en la col·lecció users.
// Solució
db.users.createIndex({ name: 1, age: -1 });

Exercici 3: Creant un Índex Únic

  1. Insereix diversos documents amb el camp email en la col·lecció users.
  2. Crea un índex únic en el camp email.
// Solució
db.users.insertMany([
  { name: "Alice", age: 25, email: "[email protected]" },
  { name: "Bob", age: 30, email: "[email protected]" }
]);

db.users.createIndex({ email: 1 }, { unique: true });

Errors Comuns i Consells

  • Error: Intentar inserir un document amb un valor duplicat en un camp amb un índex únic.

    • Solució: Assegura't que els valors en els camps indexats com a únics siguin realment únics abans d'inserir-los.
  • Consell: Utilitza índexs compostos quan les consultes filtren per més d'un camp per millorar el rendiment.

Conclusió

En aquesta secció, hem après què són els índexs, com crear-los i utilitzar-los a MongoDB. Els índexs són essencials per optimitzar el rendiment de les consultes i assegurar que les operacions de lectura siguin ràpides i eficients. En el següent tema, explorarem els diferents tipus d'índexs disponibles a MongoDB i com utilitzar-los de manera efectiva.

© Copyright 2024. Tots els drets reservats