TLDR: L’indicizzazione è solo un modo di raggruppare i documenti, dividendo le collezioni in gruppi per accelerare le prestazioni
Panoramica
Gli indici aumentano le prestazioni delle query e sono usati per le ricerche
L’idea di indicizzazione in MongoDB è simile all’indice di qualsiasi libro, aumentano la velocità di trovare una pagina. L’indice in MongoDB aumenta la velocità di trovare i documenti
Come funzionano gli indici?
Prima di tutto, cerchiamo di capire come si dichiara l’indice in MongoDB
collectionName.createIndex({field:value}) //for creating indexcollectionName.dropIndex({field:value}) //for removing index
Qui il campo è il “fieldName” che sarà indicizzato. “Value” può essere -1 o 1 o “text”.
Definisce il tipo di indice, 1 o -1 aumentano le prestazioni della query find() mentre “text” è usato per la ricerca.
1 e -1 danno l’ordine dell’indice. Ascendente = -1 & Discendente =1
Ora, come funzionano gli indici sotto il cofano?
Immaginate una collezione di utenti, ogni documento contiene varie informazioni, una delle quali è il punteggio.
Diciamo che vogliamo che tutti gli utenti ottengano 23 punti.
Quando non esiste un indice, MongoDB passa attraverso ogni documento per trovare il documento ricercato, questo è chiamato Collection scan, MongoDB ha un’abbreviazione per questo COLLSCAN (Questo è chiamato Table scan nei database relazionali)
Come possiamo ottimizzare questo?
Per ottimizzare questo possiamo creare una tabella con una colonna per il punteggio e un’altra colonna per i riferimenti che conterrà gli ID dei documenti con quel particolare punteggio. Ora abbiamo solo bisogno di scansionare quella tabella piuttosto che scansionare l’intero database. Questo è molto più veloce. Questo è esattamente ciò che è un indice.
Gli indici aiutano MongoDB a restringere il set di dati che dovrà scansionare. Questo si chiama Index Scan, MongoDB ha un’abbreviazione anche per questo IXNSCAN
Ecco una rappresentazione visiva di un indice di punteggio e la sua mappatura.