Mysql
 sql >> Database >  >> RDS >> Mysql

Tutte le colonne della tabella devono essere indicizzate o non database mysql?

La creazione di un indice richiede spazio su disco aggiuntivo e poiché troppi indici possono causare problemi derivanti dai limiti di dimensione dei file system, è necessario prestare attenzione per selezionare i campi corretti da indicizzare.

Poiché gli indici vengono utilizzati solo per accelerare la ricerca di un campo corrispondente all'interno dei record, è ovvio che i campi di indicizzazione utilizzati solo per l'output sarebbero semplicemente uno spreco di spazio su disco e tempo di elaborazione quando si esegue un'operazione di inserimento o eliminazione, e quindi dovrebbe essere evitato. Data anche la natura di una ricerca binaria, la cardinalità o l'unicità dei dati è importante. L'indicizzazione su un campo con una cardinalità di 2 dividerebbe i dati a metà, mentre una cardinalità di 1.000 restituirebbe circa 1.000 record. Con una cardinalità così bassa l'efficacia si riduce a un ordinamento lineare e Query Optimizer eviterà di utilizzare l'indice se la cardinalità è maggiore del 30% del numero del record, rendendo l'indice uno spreco di spazio.

Quindi meglio aggiungere l'indicizzazione su un gruppo di colonne.