Potrebbe sembrare una domanda ingenua, ma quando sono necessari gli indici delle tabelle del database in mysql? In che modo tali indici influiscono sulle prestazioni e perché?
Lo scopo degli indici del database è di aumentare il rendimento delle ricerche nelle tabelle di dati.
Come forse già sai, per le strutture di dati non ordinate , la notazione asintotica O (f (n)) per le ricerche è O (n) . Significa che, nel peggiore dei casi, verranno visualizzate tutte le righe della tabella in ordine alle righe corrispondenti alla clausola WHERE (e lo stesso vale per le colonne JOIN). Potrebbe non essere così male in un piccolo tavolo, ma può diventare molto lento su un tavolo più grande.
Poiché una tabella di dati non può contenere fisicamente dati ordinati per più colonne (in generale, può essere fisicamente ordinata solo da una singola colonna), gli indici diventano utili. In breve, gli indici sono solitamente una B-tree (o una variante) mappa ordinata contenente un dato colonna specifico come chiave e le informazioni sulla riga come valore di immissione. In questo modo, O (f (n)) può essere ridotto a O (log (n)) .
Sono necessari gli indici? No. Ma le tue query mostreranno un enorme incremento delle prestazioni, se usi gli indici nel modo giusto.
Tuttavia, il guadagno in termini di prestazioni ha i suoi svantaggi: per aumentare il rendimento della ricerca, le
Fondamentalmente, un indice su una colonna ti permette di trovare molto rapidamente tutte le righe di una tabella che hanno un valore specifico (o intervallo di valori) in quella colonna, senza dover guardare ogni singola riga, e non importa quanto grande la tabella è.
Quindi, l'indice può velocizzare drasticamente le query che hanno una clausola WHERE che si riferisce a quella colonna, così come JOIN e SELECT nidificati. Soprattutto per tavoli molto grandi, gli indici sono assolutamente essenziali per ottenere buone prestazioni. Ma, naturalmente, aiutano solo se li hai sulle colonne utilizzate effettivamente dalle tue query.