Основным принципом, который SAP указывает в своих заметках о производительности , является:
Сохраняйте число обращений низким
, что означает условие WHEREНИКОГДА не должно быть пустым, как вы собираетесь делать.Никогда не читайте всю базу данных.
Сохраняйте количество операций чтения низким * Принцип 1012 * только на третьем месте, то есть он менее важен для огромных объемов данных.Но также вы не должны злоупотреблять этим и никогда не должны использовать DB-операции в циклах, как это делает ваш второй вариант, если вы не делаете что-то особенное с некоторыми особыми требованиями.
Скажем больше, ваш код нарушает Сохраняйте объем данных на низком уровне , так как вы выбираете все столбцы вместо необходимых.Избегайте использования * в SELECT, если вы действительно не используете все столбцы.
Поэтому ответ таков: используйте 1-й фрагмент кода (но с WHERE в SELECT!), Это было бы более эффективно.В большинстве случаев операции ABAP обходятся дешевле, чем операции с БД.
Полезный блог на эту тему:
https://blogs.sap.com/2014/05/21/a-complete-guide-to-opensql-statements-step-by-step-tutorial-with-screenshots/