ACTUALIZACIÓN: Intente hacer que la columna col NO sea NULL. Esa es la razón por la que no está usando el índice. Cuando no es nulo, este es el plan.
SELECT STATEMENT, GOAL = ALL_ROWS 69 10 30
HASH GROUP BY 69 10 30
INDEX FAST FULL SCAN SANDBOX TEST_INDEX 56 98072 294216
Si el optimizador determina que es más eficiente NO usar el índice (tal vez debido a la reescritura de la consulta), entonces no lo hará. Las sugerencias del optimizador son solo eso, es decir, sugerencias para decirle a Oracle un índice que le gustaría. para usar. Puedes pensar en ellos como sugerencias. Pero si el optimizador determina que es mejor no usar el índice (nuevamente, como resultado de la reescritura de la consulta, por ejemplo), entonces no lo hará.
Consulte este enlace:http://download. oracle.com/docs/cd/B19306_01/server.102/b14211/hintsref.htm "La especificación de una de estas sugerencias hace que el optimizador elija la ruta de acceso especificada solo si la ruta de acceso está disponible en función de la existencia de un índice o clúster y de las construcciones sintácticas de la instrucción SQL. Si una sugerencia especifica una ruta de acceso no disponible, entonces el optimizador lo ignora".
Dado que está ejecutando una operación de conteo (*), el optimizador ha determinado que es más eficiente escanear toda la tabla y el hash en lugar de usar su índice.
Aquí hay otro enlace útil sobre sugerencias:http://www.dba-oracle.com/t_hint_ignored. htm