Объясните, пожалуйста, первокласснику - в чем тут собака порылась:
Использую 1с++ 3.2.3.1
Загружаю результат прямого запроса в индексированную таблицу итзОстатки. Среди прочих имею в ней колонки:
Наименование - тип Строка
Товар - тип Справочник.Товары
Счет - тип Счет.Основной
Остаток, Сумма - тип Число
Далее создаю индекс, и выполняю такой код:
итзОстатки.ДобавитьИндекс("иОтборТовара", "Товар, Счет");
итз = итзОстатки.Копия(1);
итз.Свернуть(, "Остаток, Сумма", "иОтборТовара");
В результате в свернутой таблице 5219 строк:
Всего время, мс.: 9412 Выполнение запроса: 1289 Обработка результатов запроса: 8123, в т.ч. (по замеру в отладчике):
2067 итзОстатки.ДобавитьИндекс
4329 итз = итзОстатки.Копия
1978 итз.Свернуть
= Что-то долго... (
Добавляю в начало индекса Наименование, остальное все то же:
итзОстатки.ДобавитьИндекс("иОтборТовара", "Наименование, Товар, Счет");
В результате в свернутой таблице 5219 строк:
Всего время, мс.: 2230 Выполнение запроса: 1132 Обработка результатов запроса: 1098, в т.ч. (по замеру в отладчике):
303 итзОстатки.ДобавитьИндекс
699 итз = итзОстатки.Копия
175 итз.Свернуть
= Уже лучше.. )
Переставляю Наименование в конец индекса:
итзОстатки.ДобавитьИндекс("иОтборТовара", "Товар, Счет, Наименование");
Всего время, мс.: 9456 Выполнение запроса: 1351 Обработка результатов запроса: 8105
= Долго, как в первом случае..
Чего это?.. Получается, что для быстрого индексирования в начале индекса должно быть строковое значение?.. С методом Группировать() та же картина..
Это толкнуло пойти дальше и добавить в запрос нетипизированные значения ТоварИД и СчетИД - строковые идентификаторы объектов для использования в индексах:
итзОстатки.ДобавитьИндекс("иОтборТовара", "ТоварИД, СчетИД");
Всего время, мс.: 1215 Выполнение запроса: 1102 Обработка результатов запроса: 113
= Это уже чудно! Так и будем продолжать! Но вопрос таки остался - Ясное дело, что нужно потратить некоторое время на преобразование типов Товар и Счет при создании индекса, но
каким макаром на это преобразование положительно влияет строковое значение Наименования в начале ключа?