У меня тоже появилась такая необходимость.
Сделал тестовую обработку. Выполнил ее не монопольно на рабочем сервере в копии рабочей базы при активной работе пользователей (в других базах).
Конфигурация: Windows 2008 Server, MS SQL 2008, 1С 27 релиз патченный-перепатченный
Код:
Перем глОстТовара Экспорт;
//*******************************************
Процедура ПриОткрытии()
стрдатыТА=строка(формат(НачМесяца(ПолучитьДатуТА()),"ДГГГГММДД"));
глОстТовара = СоздатьОбъект("ODBCRecordset");
ТекстЗапроса = "
|SELECT
| SUM($Рег.ОстатокТовара)
|FROM
| $РегистрИтоги.ОстаткиТоваров Рег (NoLock)
|WHERE
| Рег.PERIOD='"+стрдатыТА+"' AND
| $Рег.Товар = ?
|";
Если глОстТовара.Подготовить(ТекстЗапроса)=0 тогда
сообщить("Ошибка подготовки запроса остатков по складу (гл)! "+глОстТовара.ПолучитьОписаниеОшибки()+РазделительСтрок+"Свяжитесь с админитсратором!!!");
КонецЕсли;
глОстТовара.ПостроитьПараметры();
КонецПроцедуры
//*******************************************
Функция глОстатокТовара(товар) Экспорт
ост=0;
глОстТовара.УстПараметр(1, товар);
ост=глОстТовара.ВыполнитьСкалярный();
Возврат ост;
КонецФункции
//*******************************************
Процедура Сформировать()
спр=СоздатьОбъект("Справочник.Номенклатура");
Для Инд=1 По 10 Цикл
Сообщить("Попытка № "+Инд);
спр.ВыбратьЭлементы();
А=0;
ОбщееНачало=_GetPerformanceCounter();
Пока Спр.ПолучитьЭлемент()=1 Цикл
Если Спр.ЭтоГруппа()=1 Тогда
Продолжить;
КонецЕсли;
Ост=глОстатокТовара(Спр.ТекущийЭлемент());
А=А+1;
Если А=1000 Тогда
Прервать;
КонецЕсли;
КонецЦикла;
ОбщееВремя=(_GetPerformanceCounter()-ОбщееНачало)/1000;
Сообщить("Прямой запрос = "+ОбщееВремя);
спр.ВыбратьЭлементы();
А=0;
ОбщееНачало=_GetPerformanceCounter();
Пока Спр.ПолучитьЭлемент()=1 Цикл
Если Спр.ЭтоГруппа()=1 Тогда
Продолжить;
КонецЕсли;
");
А=А+1;
Если А=1000 Тогда
Прервать;
КонецЕсли;
КонецЦикла;
ОбщееВремя=(_GetPerformanceCounter()-ОбщееНачало)/1000;
Сообщить("Регистр = "+ОбщееВремя);
КонецЦикла;
КонецПроцедуры
//*******************************************
Результаты как-то не порадовали
Попытка № 1
Прямой запрос = 39.703
Регистр = 43.021
Попытка № 2
Прямой запрос = 44.288
Регистр = 40.961
Попытка № 3
Прямой запрос = 38.426
Регистр = 39.642
Попытка № 4
Прямой запрос = 41.505
Регистр = 42.717
Попытка № 5
Прямой запрос = 41.22
Регистр = 38.238
Попытка № 6
Прямой запрос = 41.178
Регистр = 41.793
Попытка № 7
Прямой запрос = 38.793
Регистр = 40.759
Попытка № 8
Прямой запрос = 39.377
Регистр = 39.712
Попытка № 9
Прямой запрос = 40.323
Регистр = 39.845
Попытка № 10
Прямой запрос = 40.099
Регистр = 40.799