2010-08-05 13 views

risposta

14

questo è in realtà lo stesso tipo di domanda come:

Perché ci vuole più tempo per mettere tutti i miei generi alimentari nel posto giusto nella mia cucina che lasciare tutto nelle borse dopo aver visitato i miei generi alimentari negozio?

Questo perché quando si memorizzano i prodotti alimentari, li si vuole su una bella posizione ben nota in modo che sia più facile trovarli in seguito.

Un database deve fare lo stesso.

  • Se si dispone di una tabella senza indice, è sufficiente aggiungere nuovi dati alla fine della tabella.
  • Se si dispone di un indice, il database deve eseguire più lavoro. Probabilmente metterà ancora il record alla fine del tavolo, ma in aggiunta aggiornerà il suo indice per assicurarsi che, se si vuole trovare quel record in seguito, lo troverà più rapidamente che senza indice.

Ciò significa anche che l'aggiunta di ulteriori indici rallenterà ulteriormente gli inserimenti.

Dovrebbe essere chiaro che si desidera creare un indice solo se lo si utilizzerà anche successivamente. Se crei solo un indice e successivamente non lo utilizzi per migliorare le prestazioni di una query, non è necessario disporre dell'indice poiché rallenterà solo gli inserimenti e non migliorerà alcuna query.

+1

Mi piace l'analogia ;-) . –

+0

Per rendere l'analogia più corretta dal punto di vista pedestre, direi che è come prendere due di ogni oggetto della spesa; un articolo va nella dispensa in qualsiasi ordine precedente, l'oggetto duplicato viene messo sul banco della cucina in ordine alfabetico. A meno che, naturalmente, non si utilizzi una tabella organizzata in base all'indice, nel qual caso non si preoccupa di ottenere l'articolo per la dispensa :) –

9

Un'istruzione INSERT deve aggiungere i dati ai blocchi di dati della tabella e aggiornare gli indici definiti dalla tabella.

Chiaramente, se si dispone di un indice, l'inserto dovrà fare ancora un po 'di' lavoro 'per aggiornare l'indice.

1

Gli indici consentono di memorizzare più informazioni (in blocchi indice) sui dati che facilitano il recupero dei dati. Ovviamente, stai facendo un lavoro aggiuntivo inizialmente per trarne vantaggio in seguito (per selezionare).

0

Se è necessario eliminare alcuni dati in una fase successiva dalla tabella inserita in essa non sarebbe una buona idea avere un indice sul tavolo. Il tempo supplementare necessario per inserire i dati nella tabella può essere compensato dalle eliminazioni eseguite più velocemente su una tabella indicizzata (se le colonne indicizzate vengono utilizzate nella clausola WHERE di eliminazione.)

+0

Questo non risponde alla domanda posta. Inoltre, i consigli generici contro l'uso di un indice (specialmente senza contesto specifico) sono scarsi consigli. –

Problemi correlati