Questa sezione descrive l'indicizzazione per Firestore Enterprise Edition. Per impostazione predefinita, Firestore Enterprise Edition non crea indici. Per ridurre i costi e migliorare le prestazioni del database, crea indici per le query più utilizzate.
Gli indici hanno un impatto significativo sulle prestazioni di un database. Se esiste un indice per una query, il database può restituire i risultati in modo efficiente riducendo la quantità di dati da analizzare e il lavoro necessario per ordinare i risultati. Tuttavia, le voci di indice aumentano i costi di archiviazione e la quantità di lavoro svolto durante un'operazione di scrittura sui campi indicizzati.
Definizione e struttura dell'indice
Un indice è composto da:
- Un ID raccolta
- Un elenco di campi nella raccolta specificata
- Un ordine, crescente o decrescente, per ogni campo
Un indice può anche abilitare le opzioni sparse o unique.
Ordinamento degli indici
L'ordine e la direzione di ordinamento di ogni campo definiscono in modo univoco l'indice. Ad esempio, i seguenti indici sono due indici distinti e non intercambiabili:
| Raccolta | Campi |
|---|---|
| città | paese (ordine crescente), popolazione (ordine decrescente) |
| città | popolazione (ordine decrescente), paese (ordine crescente) |
Quando crei un indice per supportare una query, includi i campi nello stesso ordine della query.
Densità degli indici
Per impostazione predefinita, le voci di indice archiviano i dati di tutti i documenti di una raccolta. Questo è noto come indice non sparso. Viene aggiunta una voce di indice per un documento indipendentemente dal fatto che il documento contenga uno dei campi specificati nell'indice. I campi inesistenti vengono trattati come se avessero un valore NULL durante la generazione delle voci di indice. Per modificare questo comportamento, puoi definire l'indice come indice sparso.
Indici sparsi
Un indice sparso indicizza solo i documenti nella raccolta che contengono un valore (incluso null) per almeno uno dei campi indicizzati. Un indice sparso riduce i costi di archiviazione e può migliorare le prestazioni.
Indici unici
Imposta l'opzione dell'indice unico per applicare valori unici per i campi indicizzati. Per gli indici su più campi, ogni combinazione di valori deve essere univoca nell'indice. Il database rifiuta qualsiasi operazione di aggiornamento e inserimento che tenti di creare voci di indice con valori duplicati. Se i dati dei campi indicizzati contengono valori duplicati e tenti di creare un indice unico, la creazione dell'indice non riesce e viene visualizzato un messaggio di errore nei dettagli dell'operazione.
Campi assenti in un indice unico
Se inserisci un documento con campi mancanti per l'indice unico, l'indice
imposta null valori per i campi mancanti. La voce di indice risultante deve essere
univoca, altrimenti l'operazione non riesce.
Ad esempio, con questo indice:
| Raccolta | Campi indicizzati | Ambito di query |
|---|---|---|
| città | nome (ordine crescente) | Raccolta |
Se aggiungi il documento {"abbreviation": "LA"} alla raccolta, l'indice unico
crea una voce con name impostato su null. Se poi provi ad aggiungere il
documento {"abbreviation": "NYC"}, l'operazione non riesce perché la voce risultante per l'indice unico è la stessa.
Lo stesso comportamento si applica agli indici unici con più campi.
Quando crei o aggiorni un documento, i campi indicizzati mancanti vengono impostati su null e la voce di indice risultante deve essere univoca nell'indice.
Risolvere i problemi relativi agli errori di creazione degli indici
Potresti riscontrare errori di creazione degli indici durante la gestione degli indici. Un' operazione di indicizzazione può non riuscire se il database rileva un problema con i dati. Le operazioni di indicizzazione possono non riuscire per i seguenti motivi:
- Hai raggiunto un limite di indici. Ad esempio, l'operazione potrebbe aver raggiunto il numero massimo di voci di indice per documento. Se la creazione dell'indice non riesce, viene visualizzato un messaggio di errore. Se non hai raggiunto un limite di indici, riprova a eseguire l' operazione di indice.
- Hai impostato l'opzione dell'indice unico e i dati dei campi indicizzati creerebbero voci di indice duplicate. Per procedere, rimuovi le combinazioni di valori duplicati dai dati.
Passaggi successivi
Scopri come creare e gestire gli indici.