|
![]() |
#1 |
Участник
|
А в индексе что за поля? все 5 полей запроса из InventDim?
просто на практике я видел ситуации когда создание подобных индексов приводило к остановкам системы, из за того, что собственно для ряда значений поиск остатков через InventDim приводил к полному скану этой таблицы. т.е. надо проверить что не используются всякие обобщенные партии и гтд |
|
![]() |
#2 |
Участник
|
Цитата:
Сообщение от trud
![]() А в индексе что за поля? все 5 полей запроса из InventDim?
просто на практике я видел ситуации когда создание подобных индексов приводило к остановкам системы, из за того, что собственно для ряда значений поиск остатков через InventDim приводил к полному скану этой таблицы. т.е. надо проверить что не используются всякие обобщенные партии и гтд inventdimid inventsizeid inventcolorid inventlocationid inventbatchid inventgtdid_ru |
|
![]() |
#3 |
Участник
|
О..
этот индекс и не должен использоваться. т.е. какой у вас план то - найти сначала номенклатуру(из InventSum) и InventDimId, а потом проверить все комбинации аналитик? для проверки комбинаций SQL считает что лучше использовать кластерный индекс по InventDimId. тут можно попробовать создать вот такой(ниже) - искать сразу InventDim и потом по нему уже InventSum, но опять же надо смотреть на ваши данные, т.е. это будет работать если нет обобщенных партий-гтд и нет других аналитик dataareaid inventsizeid inventcolorid inventlocationid inventbatchid inventgtdid_ru |
|
![]() |
#4 |
Участник
|
Цитата:
Сообщение от trud
![]() О..
этот индекс и не должен использоваться. т.е. какой у вас план то - найти сначала номенклатуру(из InventSum) и InventDimId, а потом проверить все комбинации аналитик? для проверки комбинаций SQL считает что лучше использовать кластерный индекс по InventDimId. тут можно попробовать создать вот такой(ниже) - искать сразу InventDim и потом по нему уже InventSum, но опять же надо смотреть на ваши данные, т.е. это будет работать если нет обобщенных партий-гтд и нет других аналитик dataareaid inventsizeid inventcolorid inventlocationid inventbatchid inventgtdid_ru Если поставить DataAreaID в вышеуказанном мной индексе на 4 место, то статистические данные запроса становятся лучше. Такой индекс sql использует без подсказок. Согласны? |
|
![]() |
#5 |
Участник
|
ну т.е. у вас сначала ищутся все InventDimId с заданной партией, потом уже выбираются остатки.
т.е. индекс который я предложил однозначно ускорит этот процесс(за счет доп фильтрации по тому же складу) а с вашим индексом какой план? |
|
![]() |
#6 |
Участник
|
Цитата:
принципиальный вопрос в том, можно ли DataAreaID ставить не на первое место в индексах? |
|
![]() |
#7 |
Участник
|
Конечно можно, и бывает ,что для каких-то таблиц так делают. Только, как уже было сказано, делать это не непосредственно в базе SQL, а в АОТ Аксапты, прямо указывая в индексе положение DataAreaId. Ну и, естественно, не везде подряд, а проверяя к чему это приводит с точки зрения выполнения запросов.
|
|
Теги |
axapta, dynamics ax, sql server, tuning |
|
|