Есть такой курсор поиска зоны с самым длинным кодом для тарификации звонка по входным данным: номеру куда звонок ушел и времени для поиска подходящей зоны
cursor zone(bnumber varchar, starttime date) is
select oz.id, oz.tariff
from operator_zones oz
where oz.code=substr(bnumber,1,length(oz.code))
and oz.start_time<=starttime
and (oz.end_time>starttime or oz.end_time is null)
and oz.operator_id=v_operator
order by length(code) desc;
Этот запрос занимает около 90% CPU при обсчете звонков
Можно ли его как-нить ускорить?
Вот эту конструкцию - oz.code=substr(bnumber,1,length(oz.code)) - можно переписать чтобы работал быстрее запрос?