Generell kommt es mal drauf an welche Oracle Version du einsetzt und was für ein Applikationstyp drunter liegt, sprich ein OLTP oder DSS / DWH System. Bei der 9i und aufwärts kann der Optimizer z.B. einen kombinierten Index (mehrere Spalten) zur Suche benutzen, auch wenn das erste Feld des Indizes in der Abfrage fehlt. Das nennt man einen Skip Scan. Bei 8i muss die Suche bei einem kombinierten Index immmer die vorderen Felder des Index besitzen, das 8i nur einen Index Range Scan kann.
Es ist (zumindest in 8) schon wichtig in welcher Reihenfolge Felder eines kombinierten Indizes gewählt werden. Im Allgemeinen ist es gut die Felder mit der höchsten Kardinalität und der höchsten Suchhäufigkeit nach vorne zu stellen. Kardinalität bedeutet wieviel Ausprägungen es gibt. Gut wäre hier eine Ausprügung pro Zeile (Bsp: Rechnungsnummer als Primary Key). Eher schlecht wäre etwas wie Geschlecht (m/w).
9i und größer kann auch einzelne Indizes kombinieren, was flexiblere Suchanfragen ermöglicht. Manchmal kann es sogar Sinn machen für Attribute mit geringer Kardinalität auf Bitmap Indizes umzusteigen, wobei man hier sehr genau lesen muss was das für Nachteile mit sich bringt.
Das genaze ist ein sehr komplexes Thema und ein Kochrezept gibt es hierfür leider nicht. Eigentlich gibt es nur eine Möglichkeit die richtige Kombination aus Indizes herauszufinden: TESTEN. Einfach mal ein paar Indizes nach den paar Grundregeln anlegen und die häufigsten Suchanfragen mit EXPLAIN PLAN testen. Wenn bei ca. 90% aller Anfragen kein Full Tablescan auftritt, ist das schonmal ein sehr guter Weg. Aber Achtung: Zu viel Indizes reduzieren die Performance von INSERT, UPDATE und DELETE um ca. 30%!