

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Le migliori pratiche per lavorare con gli indici
<a name="best-practices-indexes"></a>

## Creazione di indici
<a name="best-practices-building-indexes"></a>

Quando si importano dati in Amazon DocumentDB, è necessario creare gli indici prima di importare set di dati di grandi dimensioni. Puoi utilizzare [Amazon DocumentDB Index Tool](https://github.com/awslabs/amazon-documentdb-tools/tree/master/index-tool) per estrarre indici da un'istanza MongoDB in esecuzione o da una directory mongodump e creare tali indici in un cluster Amazon DocumentDB. Per ulteriori informazioni sulle migrazioni, consulta [Migrazione ad Amazon DocumentDB](docdb-migration.md).

## Selettività dell'indice
<a name="best-practices-index-selectivity"></a>

Si consiglia di limitare la creazione di indici ai campi in cui il numero di valori duplicati è inferiore all'1% del numero totale di documenti nella raccolta. Ad esempio, se la tua raccolta contiene 100.000 documenti, crea indici solo nei campi in cui lo stesso valore compare 1.000 volte o meno.

La scelta di un indice con un numero elevato di valori univoci (ovvero una cardinalità elevata) garantisce che le operazioni di filtro restituiscano un numero limitato di documenti, garantendo così buone prestazioni durante le scansioni degli indici. Un esempio di indice ad elevata cardinalità è un indice univoco, che garantisce che i predicati di uguaglianza restituiscano al massimo un singolo documento. Esempi di bassa cardinalità includono un indice su un campo booleano e un indice nel giorno della settimana. A causa delle loro scarse prestazioni, è improbabile che l'ottimizzatore di query del database scelga indici a bassa cardinalità. Allo stesso tempo, gli indici a bassa cardinalità continuano a consumare risorse come spazio su disco e. I/Os Come regola generale, occorre indicare indici su campi in cui la frequenza tipica del valore è l'1% della dimensione totale della raccolta.

Inoltre, è consigliabile creare solo indici su campi comunemente utilizzati come un filtro e cercare regolarmente indici inutilizzati. Per ulteriori informazioni, consulta [Come posso analizzare l'utilizzo degli indici e identificare gli indici non utilizzati?](user_diagnostics.md#user-diag-index-usage).

## Impatto degli indici sulla scrittura dei dati
<a name="best-practices-impact-writing"></a>

Sebbene gli indici possano migliorare le prestazioni delle query evitando la necessità di eseguire la scansione di tutti i documenti di una raccolta, questo miglioramento comporta un compromesso. Per ogni indice di una raccolta, ogni volta che un documento viene inserito, aggiornato o eliminato, il database deve aggiornare la raccolta e scrivere i campi in ciascuno degli indici per la raccolta. Ad esempio, se una raccolta dispone di nove indici, il database deve eseguire dieci scritture prima di riconoscere l'operazione al client. Pertanto, ogni indice aggiuntivo comporta una latenza di scrittura aggiuntiva e un aumento dello I/Os spazio di archiviazione complessivo utilizzato.

Le istanze del cluster devono essere dimensionate in modo appropriato per mantenere tutta la memoria del set di lavoro. In questo modo si evita la necessità di leggere continuamente le pagine indice del volume di storage, con un impatto negativo sulle prestazioni e un aumento dei costi. I/O Per ulteriori informazioni, consulta Dimensionamento delle [istanze](https://docs.aws.amazon.com/documentdb/latest/devguide/best_practices.html#best_practices-instance_sizing).

Per ottenere prestazioni ottimali, ridurre al minimo il numero di indici nelle raccolte, aggiungendo solo gli indici necessari per migliorare le prestazioni per le query comuni. Mentre i carichi di lavoro variano, una buona linea guida consiste nel mantenere il numero di indici per raccolta a cinque o meno.

## Identificazione degli indici mancanti
<a name="best-practices-missing-indexes"></a>

L'identificazione degli indici mancanti è una procedura consigliata che consigliamo di eseguire regolarmente. Per ulteriori informazioni, consulta [Come posso identificare gli indici mancanti?](user_diagnostics.md#user_diagnostics-identify_missing_indexes).

## Identificazione degli indici non utilizzati
<a name="best-practices-unused-indexes"></a>

Identificare e rimuovere gli indici non utilizzati è una best practice che si consiglia di eseguire regolarmente. Per ulteriori informazioni, consulta [Come posso analizzare l'utilizzo degli indici e identificare gli indici non utilizzati?](user_diagnostics.md#user-diag-index-usage).