Показать сообщение отдельно
Старый 14.04.2017, 10:51   #4  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,652 / 1158 (42) ++++++++
Регистрация: 13.01.2004
Записей в блоге: 3
Неверно поняты причины и следствия. Не факт, что причиной тормозов является высокая стоимость отдельного этапа. Все это есть по ссылкам и на видео, но если вкратце

1. Перед выполнением собственно запроса SQL строит план, по которому он будет его выполнять
2. При выполнении запроса SQL строго следует выбранному плану

Проблема в том, что план выполнения запроса может быть не оптимальным. Или выделено недостаточно места в TempDB под промежуточные результаты. Вот в этом случае запрос будет выполняться медленно. И совершенно не важно, будет ли при этом использоваться TempDB или нет.

В принципе, в синтаксисе T-SQL есть возможность явно указать, по какому плану надо выполнять ту или иную операцию. Но, во-первых, это крайне порочная практика для быстро меняющейся системы, а, во-вторых, синтаксис Axapta практически не дает возможностей по использованию хинтов для этих целей.

Как следствие, остаются только две возможности:

1. Модифицировать синтаксис самого запроса в Axapta. Возможно, разбить на вложенные запросы
2. Выполнять регулярное обслуживание базы данных вроде обновления статистики и индексов. Но тут нужен администратор базы данных

Кстати, TempDB у Вас будет использоваться вне зависимости от стоимости вставки в индекс. А за счет чего такая высокая стоимость - это надо смотреть разные дополнительные свойства. Какие именно - есть упоминание в видео-уроке

В данном случае, предположительно, проблема в том, что статистика в базе SQL давно не обновлялась. Т.е. план выполнения был выбран на основе устаревших данных. Это есть по ссылке на обсуждение прошлогодней темы на сайте SQL.ru. (первая ссылка)
__________________
- Может, я как-то неправильно живу?!
- Отчего же? Правильно. Только зря...