Avec la version 11g, il est possible de définir la caractéristique INVISIBLE pour un index. Cela signifie que l'index est physiquement présent, qu'il est tenu à jour si des opérations DML ont lieu sur la table mais que l'optimiseur ne prend pas en compte cet index du moment ou le paramètre OPTIMIZER_USE_INVISIBLE_INDEXES=FALSE (valeur par defaut).
Il est possible de créer un index invisible :
CREATE INDEX IX1 ON TABLE T1(cola,colb) INVISIBLE;
Il est également possible de rendre un index invisible par alter:
ALTER INDEX IX1 VISIBLE; ALTER INDEX IX1 INVISIBLE;
Afin de tester la pertinance d'un index, il suffit pour le DBA de modifier le paramètre de session OPTIMIZER_USE_INVISIBLE_INDEXES à TRUE et de vérifier si le plan d'éxécution utilise bien l'index invisible. Si le plan est satisfaisant et que l'index est bien utilisé, le DBA peut alors rendre l'index VISIBLE.
ALTER SESSION SET OPTIMIZER_USE_INVISIBLE_INDEXES=TRUE;