Простой запрос, но странное поведение.
%ПоляВТОстаткиТИ% - 49 числовых полей. Индексироваться должны 2 поля (индексы сильно ускоряют работу далее), но тут в sql как-то учитываются все-все поля и это очень замедляет расчет себестоимости (рядом аналогичный запрос без кучи полей и там всё моментально отрабатывает). На фото план запроса с профайлера. Проблема раньше и в другом месте наблюдалась, там без индексации в 10 раз быстрее всё стало, но тут критично оставить). Может какой флаг трассировки исправит или другая версия sql (сейчас 2012 последняя, 1С 8.3.16.1296)?
Сам запрос:
"ВЫБРАТЬ
| Т.КлючСвязи КАК КлючСвязи,
| Т.КлючТИ КАК КлючТИ,
| %ПоляВТОстаткиТИ%
|ПОМЕСТИТЬ ВТОстаткиТИ%СледующийНомерИтерации%
|ИЗ
| ВТОстаткиТИ%НомерИтерации% КАК Т
| ЛЕВОЕ СОЕДИНЕНИЕ ВТРезультатСписания_НомерПравила_%НомерИтерации% КАК СписаниеСтрок
| ПО Т.КлючТИ = СписаниеСтрок.КлючТИ
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТРезультатСписания_НомерПравила_%НомерИтерации% КАК СписаниеКлючейСвязи
| ПО Т.КлючСвязи = СписаниеКлючейСвязи.КлючСвязи
|ГДЕ
| СписаниеКлючейСвязи.ЕстьСтрокаТБ
| И (СписаниеСтрок.КлючТИ ЕСТЬ NULL
| ИЛИ %ОтборУменьшениеБазисаИсточника%)
|ИНДЕКСИРОВАТЬ ПО КлючСвязи, КлючТИ";
(1) Судя по профайлеру самое большое время тратиться на помещение во временную таблицу. Ради интереса, попробуйте вложенным запросом сделать и замерить выполнение запроса.
Возможно какие-то проблемы в настройках sql. Попробуйте перенести tempdb на более быстрый диск. Ну и место проверьте на диске с tempdb
TempDb на Ram-диске) 30гб, а запасной файл базы на рэйде не расширяется при этой операции. При увеличении строк в таблице всё драматично замедляется :(
Где-то затык...
Нашёл! Проблема в отключенной галочке "статистика автоматического создания", которую надо включить у всех баз. Ваш TempDb помог случайно)
Увидел параметры по умолчанию для TempDB: docs.microsoft.com Запрос :
SEL ECT *
FR OM sys.databases вывел все параметры. Там сразу заинтересовал столбец is_auto_create_stats_on Через следующий запрос установил в true:
ALT ER DATABASE tempdb
SET AUTO_CREATE_STATISTICS ON Оказалось эта галочка переведена как "статистика автоматического создания" вместо "автоматическое создание статистики" в параметрах базы))
Расчет себестоимости теперь не должен висеть.