Digamos que você quer verificar se a criação de um novo índice vai ser realmente usada pelo otimizador. Antes de criá-lo, você pode testar se ele resolverá seu problema atraves de INDICE VIRTUAL.
O Oracle vai criar o índice no dicionário de dados mas não vai criar o índice mesmo. Nada será armazenado nem acessado!
SQL> set autotrace traceonly explain
SQL> select name from emp where name = 'Alex';
Execution Plan
----------------------------------------------------------
0 SELECT STATEMENT Optimizer=CHOOSE (Cost=164 Card=1 Bytes=500)
1 0 TABLE ACCESS (FULL) OF 'EMP' (Cost=164 Card=1 Bytes=500)
SQL> create index emp_vir_idx1 on emp(name) nosegment;
Index created.
SQL> set autotrace traceonly explain
SQL> select name from emp where name = 'Alex';
Execution Plan
----------------------------------------------------------
0 SELECT STATEMENT Optimizer=CHOOSE (Cost=164 Card=1 Bytes=500)
1 0 TABLE ACCESS (FULL) OF 'EMP' (Cost=164 Card=1 Bytes=500)
SQL> alter session set "_use_nosegment_indexes" = true;
Session altered.
SQL> select name from emp where name = 'Alex';
Execution Plan
----------------------------------------------------------
0 SELECT STATEMENT Optimizer=CHOOSE (Cost=1 Card=1 Bytes=500)
1 0 INDEX (RANGE SCAN) OF 'EMP_VIR_IDX1' (NON-UNIQUE) (Cost=1 Card=1 Bytes=500)