Pull to refresh

Comments 10

Не лучший пример использования FOR ALL ENTRIES IN в статье, лучше RANGE. Лично я им вообще не пользуюсь. Кстати вы пробовали: что произойдет, если локальная таблица будет пустой?
Извиняюсь, увидел в выводах про пустую таблицу. И на мой взгляд намного лучше удалить дубли заранее чем мучить БД.
1. Дубли, конечно, нужно удалять заранее. Но в данном примере дублей во внутренней таблице LT_BKPF не будет, т.к. выбираются ключевые поля. Будут отдельные колонки с неуникальными значениями.

2. Касаемо RANGE. У конструкции вида «SELECT… FROM… WHERE field IN RANGE» есть существенный недостаток, с которым вы, похоже, еще не столкнулись: если в RANGE будет большое число строк (2000+), то получите dump с ошибкой DBIF_RSQL_INVALID_RSQL из-за того, что размер SQL-запроса в килобайтах превысит некоторую границу. Вот в таких случаях и спасает FOR ALL ENTRIES IN.
Да, про это ограничение знаю, есть даже нота на эту тему, но считаю, что если дело доходит до такого объема выборки, то надо пересматривать саму концепцию сбора данных из базы, наверное я преждевременно пользуюсь вашим пунктом 5.
Спасибо, опция max_in_blocking_factor помогла значительно сократить время выборки.
Подскажите, пожалуйста, как можно оценить потребление памяти при выполнении запроса?
Кажется, средствами SAP нельзя узнать объем памяти, который потребовался для отдельного запроса. Но точно можно узнать эту информацию с помощью инструментов СУБД. Попробуйте обратиться к администратору БД.
Кажется, средствами SAP нельзя узнать объем памяти, который потребовался для отдельного запроса.

А мне кажется, что не стоит писать всякую ерунду про систему, у которой sql запрос это самая частоиспользуемая инструкция в коде.
ST05 должны знать даже младшие консультанты. А люди, которые пользуются гуглом еще и DB02.
Сказали «А», говорите и «Б». Где именно в этих транзакциях посмотреть объем оперативной памяти, который потребовался для выполнения одного конкретного запроса?

В ST05 отражается время выполнения запроса. В DB02 отражается общая информация по БД (индексы, размеры таблиц и т.д.).
Извините, но я не на работе. Ищите сами :)
Сказали «А», говорите и «Б». Где именно в этих транзакциях посмотреть объем оперативной памяти, который потребовался для выполнения одного конкретного запроса?

В ST05 отражается время выполнения запроса. В DB02 отражается общая информация по БД (индексы, размеры таблиц и т.д.).


Промахнулся.
Sign up to leave a comment.

Articles