Удалите часть FOR ALL ENTRIES
Скорее всего, остальное условие ГДЕ достаточно избирательно. Вы получаете больше записей, чем необходимо, но намного быстрее.
Поскольку git_kunnr_tab
уникален, вы можете превратить его в HASHED-таблицу и отфильтровать git_oi_tab
с этим на сервере приложений.
SELECT kunnr umsks umskz gjahr belnr buzei bschl shkzg dmbtr bldat
zfbdt zbd1t zbd2t zbd3t rebzg rebzj rebzz rebzt
INTO corresponding fields of table git_oi_tab
FROM bsid
WHERE bukrs = p_bukrs
AND umsks = ' '
AND augdt = clear_augdt
AND budat le p_key
AND blart in s_blart
AND xref3 in s_xref3.
DATA: lt_kunnr_tab TYPE HASHED TABLE of <type of git_kunnr_tab>
WITH UNIQE KEY kunnr.
lt_kunnr_tab = git_kunnr_tab.
LOOP AT git_oi_tab ASSIGNING FIELD-SYMBOL(<fs_oi>).
READ TABLE lt_kunnr_tab TRANSPORTING NO FIELDS
WITH KEY kunnr = <fs_oi>-kunnr.
IF sy-subrc <> 0
DELETE git_oi_tab.
ENDIF.
ENDIF.
ENDLOOP.
FREE lt_kunnr_tab.
Это , а не общее решение
Если в таблице драйверов FAE содержится более 20% строк таблицы назначения, полное ее удаление в основном выгодно для скорости.
Если в нем меньше строк, FAE - лучшее решение.
Удаление FAE может значительно увеличить потребление памяти в результирующей внутренней таблице.
ДЛЯ ВСЕХ ЗАПИСЕЙ против таблицы диапазона
В Интернете можно увидеть множество мест, где Таблицы диапазонов быстрее, чем FAE. Это верно в некоторых очень специфических случаях:
- В таблице драйверов FAE используется только одно поле
- В таблице драйверов больше строк, чем отправляет FAE за один пакет
- По умолчанию размер пакета равен 5 в Oracle, 50 в DB2, 100 в HANA
- В таблице Range не так много строк, чтобы вызывать дамп
- Максимальная длина составляет 1 048 576 байт (примечание 1002491)
Таблицы диапазонов могут быть быстрее, чем FAE, поскольку они отправляют все условия фильтрации в одном запросе. Это, конечно, источник опасности, поскольку размер запроса ограничен. Если он превышает установленный лимит, вы получаете дамп.
Однако, используя подсказки MAX_IN_BLOCKING_FACTOR
и MAX_BLOCKING_FACTOR
, вы можете дать FAE все преимущества таблиц диапазонов, без его недостатков, увеличив размер пакета.
Поэтому используйте только Таблицы диапазонов с фактическими диапазонами , как между A и C, или нет между G и J.