Oracle запрос с использованием «как» в столбце с индексированным числом, низкая производительность

В запросе 1 выполняется полное сканирование таблицы, даже если идентификатор является индексированным столбцом. Query 2 достигает того же результата, но гораздо быстрее. Если выполняется запрос 1, возвращающий индексированный столбец, он быстро возвращается, но если возвращаются неиндексированные столбцы или получается целая строка, запрос выполняется дольше.

В Query 3 он работает быстро, но столбец «code» представляет собой VARCHAR2 (10) вместо NUMBER (12) и индексируется так же, как и «id».

Почему Query 1 не понимает, что он должен использовать индекс? Нужно ли что-то изменить, чтобы столбцы с индексированными числами работали быстрее?

[Запрос 1]

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

Объяснить план
ВЫБЕРИТЕ ЗАЯВЛЕНИЕ ALL_ROWS
Стоимость: 67 Байт: 2,592 Количество элементов: 4
2 COUNT STOPKEY
1 СТОЛ ДОСТУП ПОЛНЫЙ СТОЛ людей
Стоимость: 67 Байт: 3240 Количество элементов: 5

[Запрос 2]

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

Объяснить план
ВЫБЕРИТЕ ЗАЯВЛЕНИЕ ALL_ROWS
Стоимость: 11 Байт: 2620 Количество элементов: 4
5 COUNT STOPKEY
4 ТАБЛИЦА ДОСТУПА ПО ИНДЕКСУ КРУГЛЫЙ СТОЛ людей
Стоимость: 3 Байт: 648 Количество элементов: 1
3 вложенных цикла
Стоимость: 11 Байт: 2620 Количество элементов: 4
1 INDEX FAST FULL SCAN INDEX people_IDX3
Стоимость: 2 байта: 54 796 Количество элементов: 7 828
2 INDEX RANGE SCAN INDEX people_IDX3
Стоимость: 2 Количество элементов: 1

[Запрос 3]

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

Объяснить план
ВЫБЕРИТЕ ЗАЯВЛЕНИЕ ALL_ROWS
Стоимость: 6 Байт: 1 296 Количество элементов: 2
3 COUNT STOPKEY
2 ТАБЛИЦА ДОСТУПА ПО ИНДЕКСУ КРУГЛЫЙ СТОЛ людей
Стоимость: 6 Байт: 1 296 Количество элементов: 2
1 INDEX RANGE SCAN INDEX people_IDX4
Стоимость: 3 Количество элементов: 2

Ответы на вопрос(5)

Ваш ответ на вопрос