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

Ottimizzazione del database MySQL tramite indicizzazione

Per quanto riguarda le domande sugli indici, un indice non è solo auspicabile, ma è necessario per "accelerare" le cose. A quanto ho capito (in termini "professionisti"), la funzione di un indice è velocizzare le ricerche e i recuperi di dati all'interno di una tabella.

Motivi per utilizzare gli indici:

  1. Identifica in modo univoco ogni riga di ogni tabella (la chiave primaria è un indice, dopotutto)
  2. Gli indici sono ordinati (anche se i dati non lo sono)
  3. Velocizza ricerche e filtri:un indice rende più veloce il recupero dei dati, poiché "mantiene" il posizionamento dei dati nella tabella (rileva i dati che vuoi recuperare). Inoltre rende più facile al motore di database filtrare i dati (è sempre più veloce e semplice filtrare ordinati dati che criptati dati)
  4. Ottimizza il modo in cui i dati vengono recuperati quando si utilizzano tabelle correlate:ogni chiave esterna deve essere indicizzata per velocizzare le query che coinvolgono le relazioni primaria - chiave esterna

Alcune "regole del pollice" che utilizzo per decidere quali campi devono essere indicizzati:

  • Ogni chiave primaria è indicizzata (l'ovvio uno:una chiave primaria deve essere univoca e non nulla)
  • Ogni chiave esterna deve essere indicizzata (per rendere efficienti le relazioni primaria - chiave esterna)
  • Ogni campo numerico o data su cui devo eseguire ricerche deve essere indicizzato. Detto questo, cerco di evitare il double (o qualsiasi altro tipo numerico a virgola mobile) da indicizzare, poiché sono generalmente utilizzati per memorizzare valori non destinati a essere ricercati.
  • Ogni char o varchar il campo su cui devo eseguire le ricerche deve essere indicizzato. Cerca di evitare gli indici su text campi, poiché possono contenere valori molto grandi al loro interno.
  • Evita binario di indicizzazione (blob ) campi... non ha senso
  • Non cadi nella tentazione di indicizzare tutto. Prenditi il ​​tuo tempo per decidere quali campi devono essere indicizzato e quali campi non devono essere indicizzato.