hi Markus
ist vielleicht im thread untergegangen:
oracle ab 9i nutzt defaultmässig den cost-based-optimizer. der prüft zuerst aufgrund der statistiken, ob und welcher index genutzt werden soll. wenn die statistiken nicht aktuell sind, kann sich da der optimizer schon gröber vertun und indizes dort ignorieren, wo sie sinnvoll sind oder indizes dort nehmen, wo sie die sache langsamer machen.
einen index zu rebuilden heisst im endeffekt ihn neu aufzubauen. ich kann es nun nicht mit bestimmtheit sagen aber ich vermute mal, dass oracle bei einem rebuild die statistiken löscht. der optimizer hat nun keine vernünftigen daten mehr über die selektivität der indizes.
normalerweise geht oracle so vor, dass der index nur dann genommen wird, wenn der optimizer zum schluss kommt, dass aufgrund des index weniger als 7 % der gesammtdatenmenge gelesen werden muss. andernfalls ist ein full-table-scann effizienter.
ich würde also zuerst mal über das dbms_stats-package dein schema neu analysieren lassen, um alle statistiken (tabellen UND indizes) neu zu bauen. danach geht ev. eh wieder alles gleich schnell. in extremfällen musst du extra histogramme erstellen. das ist z.b. notwendig, wenn eine indizierte spalte wenig verschiedene werte hat, die aber meist extrem selektiv sind. beispiel: du speicherst in einer tabelle nicht nur aktuelle sondern auch historische daten. die aktuellen erkennst du an dem wert „active=‚Y‘“. das feld active hat also nur zwei werte: Y und N. eine normale statistik sagt dem optimizer, dass die spalte nur zwei werte hat, der index also 50 % der daten liefert. damit wird der index IMMER ignoriert. ein histogramm sagt dem optimizer aber, dass nur 5 % der daten den wert Y haben, der rest N, der Index also sehr wohl sinnvoll ist. gerade in statusorientierten daten kann ein histogramm manche suchen ganz dramatisch beschleunigen.
ach übrigens: in der user_indexes gibt es eine spalte „last_analyzed“. mach mal ein
select index_name, last_analyzed from user_indexes order by 2;
vermutlich findest du so am schnellsten deine problem-indizes
lg
erwin