2009-06-19 17 views

risposta

5

Google è il mio migliore amico:

http://www.orafaq.com/node/926

Il punto principale di questo articolo è:

If 2 indexes (I1 and I2) exist for a table and 
    the number of columns in Index I1 is less or equal to the number of column in index I2 and 
    index I1 has the same columns in the same order as leading columns of index I2 
Then 
    If index I1 is UNIQUE then 
     If index I2 is used to support Foregh Key or for Index Overload then 
     Do Nothing 
     Else 
     Index I2 can be DROPPED 
     End If 
    Else 
     Index I1 can be DROPPED 
    End If 
End If 

E io sono d'accordo! In effetti, cerca "indici duplicati" in Google per avere diversi tipi di risposta.

+1

Questo è probabilmente proprio nel maggior parte dei casi, ma vedere la mia risposta per quando potrebbe essere sbagliato per eliminare l'indice di sovrapposizione. –

1

Il secondo indice è sorta di ridondante - qualsiasi operazione che utilizza Index2 potrebbe utilizzare indice 1. Inoltre, scrive sarà leggermente più lenta in quanto v'è un altro indice per aggiornare.

Detto questo, Indice2 non è del tutto necessaria, perché potrebbe essere un po 'più veloce dal momento che l'indice stesso è destinata probabilmente ad essere significativamente più piccola.

1

c'è una possibilità che se le statistiche vanno aggiornati, l'ottimizzatore potrebbe scegliere indice 2 quando è necessaria indice 1. (Un suggerimento per l'ottimizzatore risolverebbe questo, naturalmente.)

2

Il secondo indice è diverso e non è ridondante per sé.

Che ne dite di questa query:

SELECT DISTINCT ColA FROM TABLE WHERE ColA IS NOT NULL; 

Oracle può rispondere a questa domanda interamente da Index 2. Ora, indice 2 ci si aspetterebbe di essere di piccole dimensioni (meno blocchi) di indice 1. Questo vuol dire, si tratta di una indice migliore per la query sopra.

Se l'applicazione non fa mai una query che si adatta meglio di Indice2 Index1, allora è ridondante per l'applicazione.

indici sono sempre un compromesso prestazioni. Quando viene eseguito un inserimento, aggiornamento o eliminazione, è necessario fare del lavoro supplementare per mantenere ciascun indice aggiuntivo.

questo è più che compensato dalla maggiore delle prestazioni fornite dal l'indice? Dipende dall'applicazione e dall'utilizzo dei dati.

Problemi correlati