2010-08-09 10 views

risposta

2

Citazione di http://download.oracle.com/docs/cd/E11882_01/server.112/e10595/indexes004.htm#ADMIN11734

Quando si ricostruisce un indice, è utilizzare un indice esistente come origine dati.

+0

Ma se l'indice non è aggiornato, contiene informazioni errate, quindi come può essere utilizzato per aggiornarsi senza fare riferimento alla tabella? – Moeb

+0

L'indice non può essere scaduto di per sé, può avere ipotesi errate/inesatte di posizioni di blocco, ma i dati effettivi che contiene devono essere precisi, considerare l'alternativa, se gli indici fossero abilitati ma inaccurati, la query il motore non potrebbe mai usarli. – Andrew

1

Credo che questo sia perché l'indice viene normalmente utilizzato per ricostruire se stesso e come vengono utilizzati i rowid fisici nell'indice.

Un indice su una tabella ordinaria memorizza i rowid fisici, ma poiché una tabella organizzata per indice ha una struttura fluida, un indice secondario è in grado di memorizzare solo un'ipotesi di rowid fisica.

Quando si ricostruisce un indice su una tabella ordinaria, non è necessario fare riferimento alla tabella di origine per i rowid fisici, li ha già nell'indice. Ma su una tabella organizzata su indice, la ricostruzione deve rivedere il rowid fisico ed è quindi costretta a scansionare la tabella di base.

+0

Ma se l'indice della tabella ordinario non è aggiornato, contiene informazioni errate, quindi come può essere utilizzato per aggiornarsi senza fare riferimento alla tabella? – Moeb

+0

Ricostruire un indice significa più ristrutturarlo per essere più efficiente, non che i dati siano "sbagliati". Nel caso di una tabella organizzata su indice ci sono dati errati nell'indice, le supposizioni fisiche del rowid che avrebbero certamente perso il bersaglio dopo molti aggiornamenti alla tabella. –

+1

La documentazione di Oracle qui dovrebbe leggere "ricostruzione di un indice utilizzabile su una tabella organizzata su heap". La ricostruzione di un indice (o partizione/sottopartizione) di un indice inutilizzabile richiede la rilettura della tabella di base. –

Problemi correlati