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

È corretto indicizzare tutte le colonne in un database MySQL?

No, non indicizzi tutte le colonne. Indicizzi le colonne che sono specificamente coinvolte in un WHERE clausola, e talvolta se sono coinvolti in un ORDER BY .

In questo caso vorresti un indice su type :

SELECT name FROM users WHERE type='admin'

In questo caso vorresti un indice su active,type :

SELECT name FROM users WHERE type='admin' AND active=1

In questo caso potresti volere un indice su active,type,name :

SELECT name FROM users WHERE type-='admin' AND active=1 ORDER BY name LIMIT 10

Più indici aggiungi, più lente saranno le scritture, ma più veloci saranno le letture. Questo è un classico compromesso. Valuta attentamente quali indici ti servono e applicali solo se ci sarà un beneficio tangibile. Non limitarti a schiaffeggiarli perché ritieni che dovrebbero essere lì.

Su tabelle super minuscole, quelle con <1000 righe, gli indici non saranno di grande aiuto perché la scansione di una tabella non richiederà molto tempo. Su tutto ciò che non è banale sono assolutamente essenziali.

Se riscontri problemi di prestazioni, suggerirei che il tuo schema è l'ostacolo più grande, non la mancanza di indici.