Показать сообщение отдельно
Старый 05.11.2019, 10:34   #2  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от SuperStar88 Посмотреть сообщение
Как рекурсивно пройтись?

PS: в SQL это будет как-то так:
один сложный запрос не всегда дает наилучшую производительность в многопользовательской системе.
даже в чистом SQL.

общая рекомендация для SQL - сводите сложный запрос к нескольким простым, для которых с большой вероятностью есть уже скомпилированные планы в кэше и для которых у SQL есть хорошие эвристики.

дополнительная рекомендация для Аксапты - обязательно смотрите на свойство CacheLookup таблицы.

в 2009 для таблиц BOM, BOMTable свойство CacheLookup=Found
это значит, что простые запросы по этим таблицам возможно вообще не будут отправляться на SQL, аксапта будет возвращать уже найденные записи из кэша.

(простые - это запросы по одной таблице, в условиях присутствуют только одно ключевое поле. Как правило, метод find содержит именно такой простой запрос)

поэтому вполне возможно, что стоит свести к X++ методу, который оперирует только простыми запросами по таблицам BOM, BOMTable. Тогда в многопользовательской системе, где много разных пользователей работает с BOM, вы с бОльшей вероятностью получите более быстрый код.

Главное:
* НЕ гонитесь за производительностью ОДНОГО запроса, который выполняется в МОНОПОЛЬНОМ режиме.
* постарайтесь поднимать ОБЩУЮ производительность многопользовательской системы
__________________
полезное на axForum, github, vk, coub.
За это сообщение автора поблагодарили: SuperStar88 (1).