MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Indice in MongoDB

L'indice è un modo tipico per velocizzare le query nel normale sistema di database. Non c'è differenza tra MongoDB e un sistema di database basato su documenti. Questo articolo fornisce informazioni dettagliate sull'indice in MongoDB, per l'ottimizzazione delle query.

Indice in Mongo:

Predefinito

_id è un oggetto ObjectId, tipo BSON a 12 byte che garantisce l'unicità all'interno della raccolta. L'ObjectId viene generato in base a timestamp, ID macchina, ID processo e un contatore incrementale locale del processo.

Campo singolo

Per un indice a campo singolo e operazioni di ordinamento, l'ordinamento (cioè crescente o decrescente) della chiave dell'indice non ha importanza perché MongoDB può attraversare l'indice in entrambe le direzioni. Il valore di index è il tipo di index. Ad esempio, 1 indica l'ordine crescente e -1 specifica l'ordine decrescente.

db.friends.createIndex( { "name" : 1 } )

Campo composto

L'ordine dei campi elencati in un indice composto ha significato. Ad esempio, se un indice composto è composto da { userid:1, score:-1 }, l'indice ordina prima per userid e poi, all'interno di ciascun valore userid, ordina per punteggio.

db.products.createIndex( { "item": 1, "stock": 1 } )

Chiave multipla

MongoDB utilizza più indici per indicizzare il contenuto in un array. MongoDB crea voci di indice separate per ogni elemento dell'array. Non è necessario creare esplicitamente più chiavi.

Indice di testo

Una raccolta può avere al massimo un indice di testo.
Costo delle prestazioni per l'indice di testo:
gli indici di testo possono essere grandi. Contengono una voce di indice per ogni parola post-radice univoca in ogni campo indicizzato per ogni documento inserito.
gli indici di testo influiranno sulla velocità effettiva di inserimento perché MongoDB deve aggiungere una voce di indice per ogni parola post-radice univoca in ogni campo indicizzato di ogni nuovo documento di origine.

db.reviews.createIndex( { comments: "text" } )

Indice hash

Eseguire query sul contenuto in base al valore hash. L'hash è una funzione da calcolare in base al suo valore. Il valore hash è progettato per essere un valore distinto. L'unico vantaggio è che è così veloce, che richiede O(1) al massimo ma per contratto il normale albero di ricerca binario prenderà O(Log(N)). L'hash sarà teoricamente più veloce della normale implementazione dell'albero di ricerca binario. Ma lo svantaggio è che l'indice hash che esegue la ricerca dell'intervallo sarà estremamente lento rispetto all'indice normale.

Questo è un esempio in Python per creare un indice hash

db.active.createIndex( { a: "hashed" } )