2010-08-09 11 views

Antwort

2

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

Wenn Sie einen Index neu zu erstellen, verwenden Sie einen vorhandenen Index als Datenquelle.

+0

Aber wenn der Index veraltet ist, enthält es falsche Informationen, also wie kann es verwendet werden, um sich zu aktualisieren, ohne auf die Tabelle zu verweisen? – Moeb

+0

Der Index kann nicht per se veraltet sein, er kann falsche/ungenaue Vermutungen von Blockstandorten haben, aber die darin enthaltenen tatsächlichen Daten müssen genau sein, bedenken Sie die Alternative, wenn Indizes erlaubt wären, aber ungenau, die Abfrage Motor könnte sie nie benutzen. – Andrew

1

Ich glaube, das liegt daran, dass der Index normalerweise verwendet wird, um sich selbst neu zu erstellen, und wie physikalische Zeilennummern im Index verwendet werden.

Ein Index für eine gewöhnliche Tabelle speichert physische Zeilennummern, aber da eine indexorganisierte Tabelle flüssig strukturiert ist, kann ein sekundärer Index nur eine physikalische Rowid-Schätzung speichern.

Wenn Sie einen Index für eine normale Tabelle neu erstellen, muss er nicht auf die Quelltabelle für physikalische Zeilennummern verweisen, da diese bereits im Index enthalten sind. Bei einer indexorganisierten Tabelle muss die Neuerstellung jedoch die physischen Zeilennummern erneut überprüfen und ist daher gezwungen, die Basistabelle zu scannen.

+0

Aber wenn der gewöhnliche Tabellenindex veraltet ist, enthält er falsche Informationen. Wie kann er verwendet werden, um sich selbst zu aktualisieren, ohne sich auf die Tabelle zu beziehen? – Moeb

+0

Der Wiederaufbau eines Index ist mehr über die Umstrukturierung, um effizienter zu sein, nicht, dass die Daten "falsch" sind. Im Fall einer indexorganisierten Tabelle gibt es falsche Daten im Index, die physikalischen Rowid-Annahmen, die nach vielen Aktualisierungen der Tabelle sicher vom Ziel abgewichen wären. –

+1

Oracle Dokumentation sollte hier lesen "Neuerstellung eines verwendbaren Index auf einem Heap-organisierte Tabelle." Der Neuaufbau eines Indexes (oder einer Partition/Unterpartition) eines unbrauchbaren Indexes erfordert ein erneutes Lesen der Basistabelle. –

Verwandte Themen