Heim  >  Artikel  >  Datenbank  >  Wie stellt Oracle fest, ob ein Index ungültig ist?

Wie stellt Oracle fest, ob ein Index ungültig ist?

WBOY
WBOYOriginal
2022-05-25 15:31:156113Durchsuche

In Oracle können Sie die Anweisung „select status from user_indexes where index_name='index name';“ verwenden, um festzustellen, ob das zurückgegebene Ergebnis GÜLTIG ist bedeutet, dass der Index ungültig ist.

Wie stellt Oracle fest, ob ein Index ungültig ist?

Die Betriebsumgebung dieses Tutorials: Windows 10-System, Oracle 11g-Version, Dell G3-Computer.

Wie stellt Oracle fest, ob der Index ungültig ist?

Die Syntax lautet wie folgt:

select status from user_indexes where index_name='索引名称';

Wenn das Rückgabeergebnis GÜLTIG ist, bedeutet dies, dass der Index gültig ist!

Das Beispiel ist in der Abbildung dargestellt:

Wie stellt Oracle fest, ob ein Index ungültig ist?

Erweiterte Kenntnisse:

Lösung für Indexfehler

1. Wählen Sie einen geeigneten Oracle-Optimierer

Es gibt 3 Arten von Oracle-Optimierern:

a (Regelbasiert) b. COST (kostenbasiert) c.

Legen Sie den Standardoptimierer durch verschiedene Deklarationen von OPTIMIZER_MODE-Parametern in der init.ora-Datei fest, z. B. RULE, COST, CHOOSE, ALL_ROWS, FIRST_ROWS. Natürlich können Sie es auch auf SQL-Anweisungsebene oder Sitzungsebene überschreiben.

Um den kostenbasierten Optimierer (CBO, Cost-Based Optimizer) verwenden zu können, müssen Sie den Analysebefehl häufig ausführen, um die Genauigkeit der Objektstatistiken in der Datenbank zu erhöhen.

Wenn der Optimierungsmodus der Datenbank auf selektiv (AUSWÄHLEN) eingestellt ist, hängt der tatsächliche Optimierungsmodus davon ab, ob der Analysebefehl ausgeführt wurde. Wenn die Tabelle analysiert wurde, wird der Optimierermodus automatisch zu CBO. Andernfalls verwendet die Datenbank die RULE-Form des Optimierers.

(Analysetabelle

analyze table PROD_PARTS compute statistics;
ANALYZE TABLE PROD_PARTS COMPUTE STATISTICS FOR ALL INDEXED COLUMNS;
analyze table PROD_PARTS compute statistics for table for all indexes for all indexed columns;

) [Nach einem Indexfehler stellte ich nach Rücksprache mit dem DBA fest, dass es sich um ein Problem mit der Datenstatistik handelte. Die spezifische Lösung besteht darin, die obige Anweisung auszuführen]

Standardmäßig verwendet Oracle CHOOSE Um unnötige vollständige Tabellenscans zu vermeiden, müssen Sie versuchen, die Verwendung des CHOOSE-Optimierers zu vermeiden und direkt einen regelbasierten oder kostenbasierten Optimierer zu verwenden.

2.‍Index neu erstellen

‍alter index 索引名 rebuild 【online】

3. Nachdem Sie der Anweisung einen Hinweis hinzugefügt haben, erzwingen Sie die Verwendung von „RECORD_ENTITYID“. record,record_entityid) */, index bedeutet erzwungene Verwendung des Index, record ist der Tabellenname und record_entityid ist der Indexname. Der Ausführungsplan stimmt mit der Testdatenbank überein, beide verwenden den Index „RECORD_ENTITYID“, und das logische Lesen und Schreiben beträgt ebenfalls 4.

Nach späteren Tests, nach der Analyse der Tabelle und der beiden Indizes ohne Hinzufügen von Hinweisen, kann auch der Index „RECORD_ENTITYID“ verwendet werden. Da die Tabelle jedoch recht häufig aktualisiert wird, weiß ich nicht, wie lange es dauern wird, sie erneut zu analysieren

Empfohlenes Tutorial: „

Oracle Video Tutorial

Das obige ist der detaillierte Inhalt vonWie stellt Oracle fest, ob ein Index ungültig ist?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn