Zum Beispiel, wenn Sie Index a_b_idx auf A, B (in dieser Reihenfolge):
Auf der anderen Seite verwenden, wenn Sie index b_a_idx auf B, A:
Oracle verwenden, nicht zweite Spalte in Index verwenden kann, wenn er nicht auf dem ersten Spalte nicht filtern, da in regelmäßigen Fällen Index baumartige Struktur ist: column1 -> Spalte2-> Spalte3-> etc.
Sie benötigen Index nur für Spalte A oder für Spalte A, B, wenn Sie Abfragen wie a) durchführen.
Sie benötigen einen Index nur für Spalte B oder für Spalten B, A, wenn Sie Abfragen wie b) ausführen.
Oracle speichert keine NULL-Werte im Index, aber es kann NULL-Wert für A speichern, wenn B einen NULL-Wert enthält.
Manchmal ist es fruchtbarer, ganze Tabelle in den Speicher zu lesen und den Index zu ignorieren. Der Optimierer kann dies tun, wenn die Ergebnismenge groß ist und für alle Datensätze gilt, da der Übergang von Index zu Datensatz mehr kostet als das Lesen einfacher Datensätze.
Auch manchmal passiert es fälschlicherweise für Tabellen ohne Statistiken, so dass Sie entweder Jobs mit alter table ... compute Statistiken oder Oracle 11+, die Statistiken wie diese ohne Jobs berechnen können.
Meistens ist ein anderer Index eine gute Sache für Abfragen, aber schlechte Sache für Updates/Datenträger. Jeder Index belegt Speicherplatz und jede Aktualisierung von Datensätzen führt Aktualisierungen für jeden Index durch. Daher ist es für stark aktualisierte Tabellen nicht gut, viele Indizes zu haben, aber für häufig abgefragte Tabellen ist es besser, Indizes für alle gängigen Fälle zu haben.
Für die meisten flachen Abfragen (ohne Joins/Unterabfragen/Hierarchien) wird nur 1 Index verwendet, so dass Indizes für jede Spalte im Allgemeinen nur eine Verschwendung von Speicherplatz ist. Sie benötigen einen mehrspaltigen Index zur Optimierung von A = ... und B = ...
Wie beim Indextyp benötigen Sie wahrscheinlich einfache, nicht eindeutige Indizes.
Werden diese DML-Sitzungen von mehreren Sitzungen oder nur einer einzigen Sitzung ausgeführt? –
Oracle indiziert keine Werte, bei denen alle Spalten null sind. Ein Index für "x (a)" enthält also nur die Nicht-Null-Werte. –
@WernfriedDomscheit erledigt durch mehrere Sitzungen –