L'articolo dice che quando si ha a che fare con insiemi di dati molto grandi, in cui la quantità di righe con cui si lavora si avvicina al numero di righe che è nella tabella, l'uso di un indice potrebbe danneggiare le prestazioni.
In questo caso, passare attraverso l'indice danneggerà davvero le prestazioni, a condizione che siano necessari più dati di quelli presenti nell'indice.
Per passare attraverso l'indice, il motore del database deve prima leggere grandi parti della tabella indice (è un tipo di tabella), quindi per ogni riga (o serie di righe) da questo risultato, passare al reale tabella e iniziare a cherrypicking le pagine da leggere.
Se, invece, è necessario recuperare solo le colonne che fanno già parte della tabella dell'indice, il motore del database deve solo leggerle e non continuare sull'intera tabella per ulteriori dati.
Se si finisce per leggere la maggior parte o vicino alla maggior parte della tabella effettiva in questione, tutto il lavoro necessario per gestire l'indice potrebbe essere più sovraccarico di una semplice scansione completa della tabella.
Ora, questo è all l'articolo sta dicendo. Per la maggior parte del lavoro che riguarda un database, l'uso degli indici è la cosa giusta da fare.
Ad esempio, se è necessario estrarre un piccolo gruppo di righe, passare attraverso un indice anziché una scansione completa della tabella sarà più veloce di molti ordini di grandezza.
In ogni caso, in caso di dubbi, è necessario eseguire un po 'di profilazione delle prestazioni per scoprire come si comporta la tua applicazione con diversi tipi di carichi e quindi iniziare a modificare, non prendere un singolo articolo come un proiettile d'argento per qualsiasi cosa.
Ad esempio, un modo per accelerare le query di esempio che fa un conteggio sulla colonna pad
nell'articolo, sarebbe quella di creare un unico indice che copriva sia val
e pad
, in questo modo, il conteggio sarebbe semplicemente un index-scan, e non una scansione indice + ricerca tabella, e sarebbe eseguito più velocemente della scansione completa della tabella.
La soluzione migliore è quello di conoscere i dati, e di sperimentare, e di sapere come gli strumenti che utilizzano il lavoro, così effettivamente, saperne di più su indici, ma alla fine, è si che decide cosa è meglio per il tuo programma.
Non riesci nemmeno a respirare senza indici! –
Buon lavoro con test comparativi sul proprio database. Quando si tratta di prestazioni, il test indica sempre in che direzione è più veloce. – phkahler