24.04.2016, 17:49 | #1 |
Участник
|
Улучшение производительности
Подскажите как вы оптимизируете запросы к базе данных.
Есть несколько форм которые используют как источник данных View в которой объединены несколько таблиц, каждая по несколько миллинов записей в каждой. Открываются вплоть до минуты. Делаю трейс, нахожу самый тяжелый запрос, загружаю его в SQL, анализирую план выполнения, создаю индексы которые SQL рекомендует. Никаких изменений, иногда даже становится дольше , что еще можно проверить ? По самим индексам которые рекомендует SQL вопросы: 1. Часто предлагает создать индекс по нескольким полям, но DataAreaId и Partition среди них нет. 2. Предлагает создать некластерный индекс по AccountNum на VendTable, хотя там уже такой кластерный есть. Что в таких случаях делать ? Почему точно такой же запрос с параметрами который в Аксапте выполняется за 1 минуту в SQL иногда зависает на почаса+ ? Как надежней тестрировать новые индексы, создавая их в SQL и запуская запросы там же, или через АХ? Спасибо.
__________________
_databaseTransDelete ... bl@$ ! |
|
25.04.2016, 14:39 | #2 |
Участник
|
не смотря на план который предлагает SQL на бумажке делаете делаете собственный план запроса(т.е. как бы вы выбирали данные, если бы вам пришел такой запрос). потом сравниваете с тем что предлагает SQL. по идее вы должны зная свое решение генерить более оптимальные планы, так как обладаете информацией о логической структуре данных - понимаете для чего это вообще нужно(чего нет у SQL)
|
|
25.04.2016, 14:48 | #3 |
Участник
|
Цитата:
|
|
|
За это сообщение автора поблагодарили: mazzy (2). |
25.04.2016, 14:51 | #4 |
Участник
|
думать.
далеко не всегда предложения по одному запросу соответствуют типовой нагрузке. Цитата:
бывает и наоборот, запрос, который выполняется в Аксапте полчаса в SQL выполняется за минуту если одним словом - статистикой. |
|
25.04.2016, 14:56 | #5 |
Участник
|
|
|
25.04.2016, 15:19 | #6 |
Участник
|
Цитата:
прошу сюда: А при чем тут курсоры, не курсоры? кардинальное отличие во времени могут дать только разные планы |
|
26.04.2016, 13:12 | #7 |
Участник
|
Не создавайте индексы которые SQL рекомендует - он не всегде прав!
Цитата:
Почему точно такой же запрос с параметрами который в Аксапте выполняется за 1 минуту в SQL иногда зависает на почаса+ ?
Для мониторинга производительности, установите DynamicsPerf.
__________________
AxAssist 2012 - Productivity Tool for Dynamics AX 2012/2009/4.0/3.0 |
|