Ввод начислений (RPaySumEmpl) - помогите оптимизировать расчет итогов
Подскажите, как ускорить расчет итогов в форме
"Ввод начислений и удержаний" (RPaySumEmpl) ?
Суть проблемы: на форме для источника данных (таблица RPayTrans)
определены три display-метода: sumOnHand, sumNach, sumUder.
Эти методы выполняются неприемлемо медленно, особенно это
заметно, если таблица RPayTrans достаточно заполнена.
Пробовал следующее:
1) Объявлял на форме переменную-контейнер, где хранил кэш значений итогов таким образом, чтобы они вычислялись на сервере, только за один раз для каждой записи.
Удалось слегка уменьшить время реакции, но все равно не устраивает - слишком медленно.
2) Пробовал оптимизировать сами запросы, тк получается, что все тормоза - изза них.
В самом деле - журнал трассировки показывает, что ни в одном случае индексы не применяются :-(.
Создавал на таблице EmplTable индекс по полю PayMainEmplId_Ru, указывал
в запросе соответствующий index hint, не помогает - индексы все равно не используются.
Теперь вопросы:
1) Почему методы sumOnHand, sumNach, sumUder написаны так,
что запрос к данным выполняется на клиенте:
это баг, или так на самом деле быстрее?
2) Если мои попытки перенести расчет на сервер все-таки
правильные, тогда подскажите как заставить Систему все-таки
использовать индекс в этих запросах?
Спасибо.
|