Consulta de Oracle usando "me gusta" en la columna de número indexado, bajo rendimiento

En la Consulta 1, se realiza un escaneo completo de la tabla aunque el ID es una columna indexada. La consulta 2 logra el mismo resultado pero mucho más rápido. Si la Consulta 1 se ejecuta devolviendo una columna indexada, se devuelve rápidamente, pero si se devuelven columnas no indexadas o si la fila completa es, la consulta demora más.

En la consulta 3 se ejecuta rápido, pero la columna 'código' es un VARCHAR2 (10) en lugar de un NÚMERO (12) y se indexa de la misma manera que 'id'.

¿Por qué la Consulta 1 no reconoce que debería usar el índice? ¿Hay algo que deba cambiarse para permitir que las columnas de números indexados se realicen más rápido?

[Consulta 1]

select a1.*
from people a1
where a1.id like '119%' 
and rownum < 5

Explicar el plan
SELECCIONAR DECLARACIÓN ALL_ROWS
Costo: 67 Bytes: 2.592 Cardinalidad: 4
2 COUNT STOPKEY
1 MESA DE ACCESO A MESA COMPLETA personas
Costo: 67 Bytes: 3,240 Cardinalidad: 5

[Consulta 2]

select a1.*
from people a1, people a2
where a1.id = a2.id
and a2.id like '119%' 
and rownum < 5

Explicar el plan
SELECCIONAR DECLARACIÓN ALL_ROWS
Costo: 11 Bytes: 2,620 Cardinalidad: 4
STOPKEY 5 CONTADORES
4 TABLAS ACCESO POR ÍNDICE ROWID TABLE personas
Coste: 3 Bytes: 648 Cardinalidad: 1
3 miradas anidadas
Costo: 11 Bytes: 2,620 Cardinalidad: 4
1 ÍNDICE ÍNDICE DE ESCANEADO RÁPIDO personas_IDX3
Coste: 2 Bytes: 54.796 Cardinalidad: 7.828
2 ÍNDICE DE ESCANEADO DE RANGO personas_IDX3
Coste: 2 Cardinalidad: 1

[Consulta 3]

select a1.*
from people a1
where a1.code like '119%' 
and rownum < 5

Explicar el plan
SELECCIONAR DECLARACIÓN ALL_ROWS
Coste: 6 Bytes: 1,296 Cardinalidad: 2
3 COUNT STOPKEY
2 TABLAS ACCESO POR ÍNDICE ROWID TABLE personas
Coste: 6 Bytes: 1,296 Cardinalidad: 2
1 ÍNDICE DE ESCANEADO DE RANGO personas_IDX4
Coste: 3 Cardinalidad: 2

Respuestas a la pregunta(5)

Su respuesta a la pregunta