Consulta Oracle usando 'like' na coluna do número indexado, desempenho ruim

Na consulta 1, uma verificação de tabela completa está sendo executada, mesmo que o id seja uma coluna indexada. A consulta 2 alcança o mesmo resultado, mas muito mais rápido. Se a Consulta 1 for executada retornando uma coluna indexada, ela retornará rapidamente, mas se colunas não indexadas forem retornadas ou a linha inteira for, então, a consulta demora mais.

Na Consulta 3, ele é executado rapidamente, mas a coluna 'código' é um VARCHAR2 (10) em vez de um NÚMERO (12) e é indexada da mesma maneira que 'id'.

Por que a consulta 1 não atende ao uso do índice? Há algo que deve ser alterado para permitir que as colunas de números indexados sejam executadas mais rapidamente?

[Query 1]

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

Explique o plano
SELECIONAR DECLARAÇÃO ALL_ROWS
Custo: 67 Bytes: 2.592 Cardinalidade: 4
2 COUNT STOPKEY
1 TABELA ACESSO TABELA COMPLETA pessoas
Custo: 67 Bytes: 3.240 Cardinalidade: 5

[Query 2]

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

Explique o plano
SELECIONAR DECLARAÇÃO ALL_ROWS
Custo: 11 bytes: 2.620 cardinalidade: 4
5 COUNT STOPKEY
4 ACESSO À TABELA POR INDEX ROWID TABLE pessoas
Preço: 3 Bytes: 648 Cardinalidade: 1
3 LOOPS NESTED
Custo: 11 bytes: 2.620 cardinalidade: 4
1 ÍNDICE RÁPIDO ÍNDICE DE SCAN COMPLETO people_IDX3
Custo: 2 bytes: 54.796 cardinalidade: 7.828
2 ÍNDICE DE DISTRIBUIÇÃO DO ÍNDICE RANGE people_IDX3
Custo: 2 Cardinalidade: 1

[Consulta 3]

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

Explique o plano
SELECIONAR DECLARAÇÃO ALL_ROWS
Custo: 6 bytes: 1.296 cardinalidade: 2
3 COUNT STOPKEY
2 ACESSO À TABELA POR INDEX ROWID TABLE pessoas
Custo: 6 bytes: 1.296 cardinalidade: 2
1 INDEX RANGE SCAN INDEX people_IDX4
Preço: 3 Cardinalidade: 2

questionAnswers(5)

yourAnswerToTheQuestion