Показать сообщение отдельно
Старый 22.02.2007, 15:33   #12  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от laptev Посмотреть сообщение
В стандартном механизме создания строк журнала инвентаризации для расчёта количества inventJournalTrans.inventOnHand используется класс InventSumDate (а это уже не один запрос, а 10-20).
Во-первых, инициализация происходит в методе класса
InventCountCreate_Base.createInventJournalTrans

Во-вторых, вызывается InventSumDatePhysicalDim:nHandQty(...)

В-третьих, вызывается не 10-20 запросов, а 5
1. inventsum
2. для разнесенных финансово (для вычитания из inventSum)
3. для разнесенных физически (для вычитания из inventSum)
4. для скомплектованных (для вычитания из inventSum)
5. для зарегистрированных (для вычитания из inventSum)

Если вы сумели получить эти данные ОДНИМ(!) запросом, снимаю шляпу.
Но, скорее всего, вы написали ваш единственный исходя из сильно упрощенных предположений.

Кстати, если у вас не используется комплектация/регистрация/физические разноски, то запросы по ним должны выполняться очень быстро, поскольку должны возвращать пустой recordset. Если же вы используете, то 2,3,4,5 запросы при правильной работе должны возвращать очень небольшую выборку...

Скорее всего, тормоза в стандартном запросе связаны не с количеством запросов,
а с наличием index hint'ов. Но index hint и вообще index'ы надо настраивать для всей системы.

В общем, не убедили.
Скорее всего, вы просто не ухаживаете за вашей Аксаптой.
Скорее всего, при переписывании вы сильно упрощаете и обрезаете свой функционал (в дальнейшем вам будет очень сложно его включить обратно)
__________________
полезное на axForum, github, vk, coub.