Crystal_Ra написал(а):
Ваш вариант грешит большим временем работы , так как БД придется посчитать все записи прочитав весь индекс(если таковой есть, или его создать) - не факт что их мало.
А как тогда узнать кол-во записей, не прочитав индекс или таблицу?
![Wink ;)](./images/smilies/icon_wink.gif)
ArmAnn написал:
Также вариант чреват членовредительством со стороны базиса, которым будут прилетать плюхи за плохую производительность системы.
Не вижу ничего в этом страшного, за исключением игнорирования SAP-буфера для буферных таблиц. Особенно если делать условие по ключевым или индексным полям.
Но, в циклах, конечно, так не стоит делать
![Wink ;)](./images/smilies/icon_wink.gif)
NeMurometz написал(а):
Для есть ли запись в БД
Code:
SELECT SINGLE mandt
INTO sy-mandt
FROM mara
WHERE matnr = '000000001000000000'.
О! Этот подход просто для определения есть ли запись в БД мне определённо больше нравится, т.к. есть LIMIT
![Smile :)](./images/smilies/icon_smile.gif)
Спасибо!
LKU написал:
Вот интересно: в общем случае считать count(*) - не самый быстрый способ проверить наличие записи.
Но в данном конкретном примере, matnr - единственное поле первичного ключа таблицы, больше одного значения с кодом товара в mara быть не может.
Неужели и в этом случае конструкция select count(*) медленнее select mandt into sy-mandt?
Да даже быстрее будет! Ведь не нужно будет переносить значение MARA-MANDT в переменную SY-MANDT! %)
Предлагаю противникам COUNT(*) сделать тесты и сравнить, если у кого есть время
![Wink ;)](./images/smilies/icon_wink.gif)