Медленно выполняется запрос в SQL 2012, из-за вставки индекса? Как починить?

1. EnsTaiN 19.03.21 11:06 Сейчас в теме
Простой запрос, но странное поведение.
%ПоляВТОстаткиТИ% - 49 числовых полей. Индексироваться должны 2 поля (индексы сильно ускоряют работу далее), но тут в sql как-то учитываются все-все поля и это очень замедляет расчет себестоимости (рядом аналогичный запрос без кучи полей и там всё моментально отрабатывает). На фото план запроса с профайлера. Проблема раньше и в другом месте наблюдалась, там без индексации в 10 раз быстрее всё стало, но тут критично оставить). Может какой флаг трассировки исправит или другая версия sql (сейчас 2012 последняя, 1С 8.3.16.1296)?

Сам запрос:
"ВЫБРАТЬ
| Т.КлючСвязи КАК КлючСвязи,
| Т.КлючТИ КАК КлючТИ,
| %ПоляВТОстаткиТИ%
|ПОМЕСТИТЬ ВТОстаткиТИ%СледующийНомерИтерации%
|ИЗ
| ВТОстаткиТИ%НомерИтерации% КАК Т
| ЛЕВОЕ СОЕДИНЕНИЕ ВТРезультатСписания_НомерПравила_%НомерИтерации% КАК СписаниеСтрок
| ПО Т.КлючТИ = СписаниеСтрок.КлючТИ
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТРезультатСписания_НомерПравила_%НомерИтерации% КАК СписаниеКлючейСвязи
| ПО Т.КлючСвязи = СписаниеКлючейСвязи.КлючСвязи
|ГДЕ
| СписаниеКлючейСвязи.ЕстьСтрокаТБ
| И (СписаниеСтрок.КлючТИ ЕСТЬ NULL
| ИЛИ %ОтборУменьшениеБазисаИсточника%)
|ИНДЕКСИРОВАТЬ ПО КлючСвязи, КлючТИ";
Прикрепленные файлы:
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. andy_zhav 197 19.03.21 12:20 Сейчас в теме
(1) Судя по профайлеру самое большое время тратиться на помещение во временную таблицу. Ради интереса, попробуйте вложенным запросом сделать и замерить выполнение запроса.

Возможно какие-то проблемы в настройках sql. Попробуйте перенести tempdb на более быстрый диск. Ну и место проверьте на диске с tempdb
3. andy_zhav 197 19.03.21 12:21 Сейчас в теме
Выборка и соединения отрабатывают достаточно быстро
4. EnsTaiN 22.03.21 02:45 Сейчас в теме
TempDb на Ram-диске) 30гб, а запасной файл базы на рэйде не расширяется при этой операции. При увеличении строк в таблице всё драматично замедляется :(
Где-то затык...
5. EnsTaiN 22.03.21 09:32 Сейчас в теме
Нашёл! Проблема в отключенной галочке "статистика автоматического создания", которую надо включить у всех баз. Ваш 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

Оказалось эта галочка переведена как "статистика автоматического создания" вместо "автоматическое создание статистики" в параметрах базы))
Расчет себестоимости теперь не должен висеть.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот