Utilizzo degli indici di database [chiuso]

-2

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é?

    
posta cobie 23.12.2012 - 00:40
fonte

2 risposte

5

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 ed eliminare le operazioni diventano più lente (poiché gli indici devono essere aggiornati). Ecco alcune analisi caso peggiore asintotico asportata per diverse strutture di dati. Ricorda che questa è solo un'introduzione sull'argomento. Dovresti assolutamente dare un'occhiata più approfondita agli indici di database .

    
risposta data 23.12.2012 - 02:16
fonte
3

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.

    
risposta data 23.12.2012 - 03:14
fonte

Leggi altre domande sui tag