MongoDB Indicizzazione: createIndex() e dropIndex()

⚡ Riepilogo intelligente

MongoDB Gli indici memorizzano un sottoinsieme ordinato dei campi di una collezione, consentendo alle query di individuare i documenti senza dover scansionare ogni record. I metodi createIndex, getIndexes e dropIndex creano, elencano e rimuovono queste strutture cruciali per le prestazioni.

  • 🚀 Scopo: Indici consentono MongoDB Per una lettura più rapida, salta la scansione completa della raccolta.
  • ️ createIndex: Crea indici a campo singolo o composti in ordine crescente o decrescente.
  • 🔍 getIndexes: Elenca tutti gli indici di una collezione, incluso l'indice predefinito _id.
  • 🗑️ dropIndex: Rimuove un indice; dropIndexes cancella tutti gli indici tranne _id.
  • ️ Scambio: Un numero eccessivo di indici rallenta le operazioni di inserimento, aggiornamento ed eliminazione.
  • 🤖 Ottimizzazione dell'IA: Gli assistenti suggeriscono e generano automaticamente gli indici corretti.

MongoDB Indicizzazione createIndex dropIndex

Che cosa sono MongoDB Indici?

Gli indici sono molto importanti in qualsiasi database e con MongoDB non è diverso. Con l'uso degli indici, l'esecuzione di query in MongoDB diventa più efficiente.

Se avessi una collezione con migliaia di documenti senza indici e poi eseguissi una query per trovare determinati documenti, allora in tal caso MongoDB sarebbe necessario scansionare l'intera collezione per trovare i documenti. Ma se avessi gli indici, MongoDB utilizzerebbe questi indici per limitare il numero di documenti da cercare nella raccolta.

Gli indici sono set di dati speciali che memorizzano una parte parziale dei dati di una collezione. Poiché i dati sono parziali, la lettura risulta più agevole. Questo set parziale memorizza il valore di un campo specifico, o di un insieme di campi, ordinati in base al valore del campo stesso.

Comprendere l'impatto degli indici

Sebbene l'introduzione abbia dimostrato che gli indici sono utili per le query, averne troppi può rallentare altre operazioni come l'inserimento, la cancellazione e l'aggiornamento.

Se sui documenti vengono eseguite frequentemente operazioni di inserimento, cancellazione e aggiornamento, gli indici dovranno essere modificati con altrettanta frequenza, il che rappresenterebbe un sovraccarico per la collezione.

L'esempio seguente mostra quali valori di campo possono costituire un indice in una collezione. Un indice può essere basato su un solo campo della collezione oppure su più campi della collezione.

Nell'esempio seguente, l'ID dipendente "1" e il dipendenteCode Gli indici "AA" vengono utilizzati per indicizzare i documenti nella collezione. Pertanto, quando viene effettuata una ricerca, questi indici vengono utilizzati per trovare rapidamente ed efficacemente i documenti richiesti nella collezione.

Quindi anche se la query di ricerca è basata sul dipendenteCode “AA”, quel documento verrebbe restituito.

Comprendere l'impatto degli indici

Come creare indici: createIndex()

Creazione di un indice in MongoDB viene eseguito utilizzando il file createIndex metodo.

L'esempio seguente mostra come aggiungere un indice a una collezione. Supponiamo di avere la stessa collezione Employee, che ha i campi denominati "Employeeid" e "EmployeeName".

Crea indici con createIndex

db.Employee.createIndex({Employeeid:1})

Code Spiegazione:

  1. Migliori createIndex Il metodo viene utilizzato per creare un indice basato sull'"Employeeid" del documento.
  2. Il parametro “1” indica che quando l’indice viene creato con i valori del campo “Employeeid”, questi devono essere ordinati in ordine crescente. Si noti che questo è diverso dal campo _id (che identifica in modo univoco ogni documento) che MongoDB crea automaticamente. I documenti verranno ora ordinati in base all'Employeeid e non al campo _id.

Se il comando viene eseguito correttamente, verrà visualizzato il seguente output:

Produzione:

output createIndex

  1. Il valore numIndexesBefore: 1 indica il numero di valori di campo negli indici prima dell'esecuzione del comando. Ogni collezione ha il campo _id, che viene anch'esso conteggiato come valore di campo, quindi numIndexesBefore è pari a 1.
  2. Il valore numIndexesAfter: 2 indica il numero di valori di campo negli indici dopo l'esecuzione del comando.
  3. L'output "ok: 1" indica che l'operazione è andata a buon fine e che il nuovo indice è stato aggiunto alla raccolta.

Il codice sopra riportato mostra come creare un indice basato sul valore di un singolo campo, ma è anche possibile creare un indice basato su più valori di campo. L'esempio seguente mostra come procedere:

Crea un indice composto su più campi

db.Employee.createIndex({Employeeid:1, EmployeeName:1})

Il metodo createIndex ora tiene conto di più valori di campo, il che comporta la creazione dell'indice in base a "Employeeid" e "EmployeeName". Employeeid:1 e EmployeeName:1 indicano che l'indice deve essere creato su questi due valori di campo, con :1 che indica l'ordine crescente. Questo è noto come indice composto.

Come trovare gli indici: getIndexes()

Trovare un indice in MongoDB viene eseguito utilizzando il file ottenereIndici metodo. L'esempio seguente mostra come si può fare:

Trova gli indici con getIndexes

db.Employee.getIndexes()

Il metodo getIndexes viene utilizzato per trovare tutti gli indici in una raccolta.

Se il comando viene eseguito correttamente, verrà visualizzato il seguente output:

Produzione:

output di getIndexes

L'output restituisce un documento che mostra la presenza di due indici nella collezione: il campo _id e il campo Employeeid. Il simbolo :1 indica che i valori dei campi nell'indice vengono creati in ordine crescente.

Come eliminare gli indici: dropIndex()

Rimozione di un indice in MongoDB viene eseguito utilizzando il file dropIndex metodo. L'esempio seguente mostra come si può fare:

Elimina gli indici con dropIndex

db.Employee.dropIndex({Employeeid:1})

Il metodo dropIndex accetta i valori dei campi richiesti che devono essere rimossi dall'indice.

Se il comando viene eseguito correttamente, verrà visualizzato il seguente output:

Produzione:

output dropIndex

  1. Il valore nIndexesWas: 3 indica il numero di valori di campo negli indici prima dell'esecuzione del comando. Ogni collezione ha il campo _id, che viene anch'esso conteggiato come valore di campo.
  2. L'output ok: 1 specifica che l'operazione ha avuto successo e il campo "Employeeid" viene rimosso dall'indice.

Per rimuovere tutti gli indici contemporaneamente da una raccolta, è possibile utilizzare il comando dropIndexes. L'esempio seguente mostra come procedere:

Elimina tutti gli indici con dropIndexes

db.Employee.dropIndexes()

Il metodo dropIndexes eliminerà tutti gli indici tranne l'indice _id.

Se il comando viene eseguito correttamente, verrà visualizzato il seguente output:

Produzione:

output dropIndexes

  1. Il valore nIndexesWas: 2 indica il numero di valori di campo negli indici prima dell'esecuzione del comando.
  2. Ogni collezione ha il campo _id, che conta anche come valore del campo e non verrà rimosso da MongoDB; questo è ciò che indica questo messaggio.
  3. L'output ok: 1 specifica che l'operazione ha avuto successo.

DOMANDE FREQUENTI

Un indice a campo singolo ordina un solo campo ed è adatto a query che filtrano esclusivamente in base a quel campo. Un indice composto, invece, comprende più campi in un'unica struttura ed è adatto a query che filtrano o ordinano in base a tali campi contemporaneamente. Gli indici composti supportano fino a 32 campi.

Il campo _id è MongoDBLa chiave primaria è 'id', quindi ogni collezione ottiene automaticamente un indice _id univoco. Non può essere eliminato. Ecco perché numIndexesBefore parte da 1 anche prima di aggiungere qualsiasi indice personalizzato.

Esegui la query con .explain("executionStats"). Nel piano vincente, una fase IXSCAN significa che è stato utilizzato un indice, mentre una fase COLLSCAN significa MongoDB Ho scansionato ogni documento e un nuovo indice potrebbe essere d'aiuto.

Utilizza la fase di aggregazione $indexStats per visualizzare la frequenza di accesso a ciascun indice. Gli indici con un utilizzo molto basso sprecano spazio su disco e rallentano le scritture, quindi rimuovili con dropIndex per mantenere la raccolta snella.

Gli strumenti di intelligenza artificiale analizzano i log delle query lente e suggeriscono quali campi indicizzare. MongoDBIl Performance Advisor di 's classifica le raccomandazioni dell'indice in base all'impatto, aiutaping Si aggiungono indici di alto valore e si saltano quelli ridondanti.

Sì. Gli assistenti AI Copilot trasformano le richieste in linguaggio naturale nella sintassi corretta di createIndex, inclusi chiavi crescenti o decrescenti e ordine composto dei campi, quindi spiegano l'indice risultante.

ESR sta per Uguaglianza, Ordinamento, Intervallo. Quando si crea un indice composto, posizionare prima i campi di corrispondenza di uguaglianza, poi i campi di ordinamento e infine i filtri di intervallo. Questo ordine consente MongoDB Utilizzare l'indice nel modo più efficiente.

Una query coperta viene risolta interamente da un indice, senza leggere i documenti. Quando ogni campo nel filtro e nella proiezione risiede in un indice, MongoDB restituisce risultati più velocemente.

Riassumi questo post con: