2017-03-10 2 views
0

Ich habe Anfragen zu gespeicherten Prozeduren migrieren, und ich bekomme TAF (Tabellenzugriff Full), I-Index für eine bessere Leistung schaffen will, muss ich weiter:Index erstellen, um die Kosten in der Datenbank zu reduzieren?

CREATE INDEX MY_INDEX2 ON OWNER.TABLE_NAME(FIELD); 

Und ich bekomme nächste:

INDEX_NAME  UNIQUE LOGGING DEGREE COLUM_NAME ORDER POSITION INDEX_OWNER 
MY_INDEX  Y  NO  1  MY_FIELD Asc  1   MY_OWNER 
MY_INDEX2  N  YES  1  MY_FIELD1 Asc  1   MY_OWNER 

Irgendwelche Know-how-Position von MY_INDEX2 zu 2 ändern?

Und wie besser mein MY_INDEX2? Fügen Sie beispielsweise eine andere Reihenfolge hinzu und verwenden Sie den Bitmap-Index.

Und irgendwelche erklären mir, was Grad bedeuten?

Danke!

+0

Sie erkennen, dass ein Index bedeutet nicht unbedingt Table Access Full wird in allen Abfragen vermieden werden, nicht wahr? Wenn eine Abfrage eine große Anzahl von Zeilen verarbeiten muss (z. B. mehr als 70% aller Zeilen in einer Tabelle), ist es effizienter, alle Zeilen abzurufen und diejenigen zu ignorieren, die nicht benötigt werden, als sie zu verwenden sind ein Index für den Zugriff. Stellen Sie sicher, dass Sie keine unnötigen Indizes hinzufügen, da sie Kosten haben, sie haben nicht nur Vorteile. – mathguy

+0

Um auf @ Mathmuys Antwort zu erweitern; Alles dreht sich um COST. Der Optimierer wird verschiedene Ausführungspläne bewerten und den mit den niedrigsten Kosten auswählen. Woher bekommt es die Kosten? Statistiken!. Also, holen Sie sich einen Ausführungsplan für Ihre Anfrage und sehen Sie, was der Optimierer denkt. Tun Sie dies: Ändern Sie den Sitzungssatz statistics_level = ALL; Führen Sie dann Ihre Abfrage aus. Dann holen Sie sich die Ausgabe von select * aus der Tabelle (dbms_xplan.display_cursor (null, null, 'ALLSTATS LAST')) – BobC

Antwort

1

auf Ihre speziellen Fragen zu beantworten ...

Alle wissen, wie Wechselposition von MY_INDEX2 bis 2?

Ein Index hat keine Position. Eine Spalte im Index hat jedoch eine Position. In einem einzelnen Spaltenindex wäre dies die Position 1. Bei zusammengesetzten Indizes repräsentiert die Position die Reihenfolge der Spalten im Index.

Und wie besser mein MY_INDEX2? Fügen Sie beispielsweise eine andere Reihenfolge hinzu und verwenden Sie den Bitmap-Index .

Wie viel besser ist Ihr Index für die Leistung? Es ist vielleicht nicht besser. Alles hängt von Ihrem Daten- und Datenmodell ab. Überprüfen Sie Ihren Erklärungs-Plan. Erstellen Sie den neuen Index. Überprüfen Sie Ihren Plan erneut. Da ist mehr dran, aber fang damit an. Verwenden Sie einen Bitmap-Index nur in einer Data Warehouse/Reporting-Umgebung, in der sich die Daten nicht ändern.

Und irgendwelche erklären mir, was Grad bedeuten?

Sie können einen Grad der Parallelität für Ihren Index angeben. Ein Grad von 1 entspricht NOPARALLEL. Bewahre NOPARALLEL auf, bis du die Parallelität in der Datenbank verstanden hast.

Verwandte Themen