|  29.04.2022, 10:20 | #1 | 
| Участник | Индексы таблиц (DAX2012) 
			
			Добрый день! Уже некоторое время происходит непонятное с таблицами InventTrans и PriceDiscTable. Запросы, в которых присутствует "order by Date" начинают безбожно висеть. Спасает только реиндексация таблицы. С чем может быть связана такая проблема? З.ы. периодически при запуске реиндексации вылезает ошибка, что Система не может создать индекс потому что он уже существует   | 
|  | 
|  29.04.2022, 15:31 | #2 | 
| Участник | Цитата: Предположу что в запросе фильтр по одним полям, а сортировка по другим и его клинит. Если фильтрация попадает на нужный индекс, и вы знаете что он правильный то можно в запросе в начале добавить сортировку по его полям. Из-за фильтрации это не изменит результирующую выборку но поможет оптимизатору запросов не ошибаться. Но в начале нужно понять какой же индекс (какой план запроса) оптимизатор выбирает при тормозах. а дальше уже можно понимать из-за чего так и что поправить. | 
|  | 
|  29.04.2022, 21:59 | #3 | 
| Участник | 
			
			А вместо переиндексации обновление статистики делать не пробовали? Т.е. запускаете запрос с Order By и в момент его выполнения (это важно) запускаете обновление статистики. Следующий запрос с Order By должен выполниться быстрее 
				__________________ - Может, я как-то неправильно живу?! - Отчего же? Правильно. Только зря... | 
|  | 
|  02.05.2022, 12:48 | #4 | 
| Участник | 
			
			Скорее всего это сниффинг параметров. Переиндексация или сбор статистики вряд ли помогут решить проблему.  Возможные пути решения и мониторинга таких ситуаций можно почитать вот здесь: Resolving performance issues caused by parameters sniffing in AX2012 and D365FO Monitoring the most problematic performance problem in Dynamics AX - parameters sniffing | 
|  | 
|  12.05.2022, 21:11 | #5 | 
| Участник | 
			
			В общем по результатам различных манипуляций удалось обнаружить следующее: сам по себе ORDER BY работает без тормозов, даже по дате. Если в SELECT добавить EXIST JOIN INVENTDIM (без ORDER BY), также все норм. Но если их объединить в одном SELECT, то возникают лаги, если начать фильтровать INVENTDIM пустыми значениями, например WHERE INVENTDIM.INVENTCOLORID == ''. Как только в SELECT был добавлен #InventDimExistsJoin, проблема ушла. | 
|  | 
|  13.05.2022, 10:10 | #6 | 
| Участник | 
			
			Стоит обратить внимание на объем таблицы InventDim и почистить с помощью класса InventUnusedDimCleanUp: Inventory management > Periodic > Clean up > Inventory dimensions cleanup 
				__________________ // no comments | 
|  | 
|  | 
| 
 |