вот к примеру - из BSIS+BSAS тянем записи бух.документов, там есть такое поле ZUONR, значения которое содержат какбы 2 куска - состыкованные поля KUKEY+ESNUM таблицы присвоений FEBCL (конечная цель - вытянуть из второй номер платежки, под которую был оформлен этот бух.документ).
Не нравится производительность выборки из БД

... Дело в том, что реально 90% документов, которые отбираются из BSIS, не являются платежечными (т.е. заведомо не имеют соответствия в FEBCL).
Пробовал делать так:
*1 проход, предварительно выделяем док-ты, где возможны
*платежки
select BELNR ZUONR from BSIS into itab1
where ZUONR оканчивается на 'RUB' (признак, что в бух док-те есть платежка)
*2 проход, более детальный отбор, по док-там 1 прохода
select ... from BSIS into itab2
for all entries in itab1
where
BELNR = itab1-BELNR
плюс доп-условия на основе select-options
*3 проход, выделение KUKEY ESNUM, поиск
*соответствия в FEBCL
loop at itab2
kukey1 = itab2-ZUONR(8)
esnum1 =itab2-ZUONR+9(5)
select single SELVON from FEBCL
where KUKEY=kukey1 and ESNUM=esnum1
if sy-subrc=0
* № платежки найден, чтото делаем
endif.
endloop
Вроде-бы по идее, первый проход должен отсечь нужные 10-15%
документов, вторая выборка тогда должна выполняться существенно
быстрее (чем если-бы был один select from BSIS), т.к. набор BELNR
относительно невелик. Третий select single вообще идет только по ключевым полям
Но почему-то не наблюдается увеличения производительности
Можно-ли както еще ускорить "увязку" двух плоских таблиц, если 1 поле одной нужно поделить на 2 куска, и связать из с 2 полями другой таблицы?