AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
DAX
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск Все разделы прочитаны

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 15.02.2022, 17:55   #1  
oip is offline
oip
Axapta
Лучший по профессии 2014
 
2,564 / 1416 (53) ++++++++
Регистрация: 28.11.2005
Записей в блоге: 1
Цитата:
Сообщение от DesparioN Посмотреть сообщение
С чем связано такое ограничение?
Цитата:
Create a derived table
Next, create a derived table, and set the SupportInheritance property to Yes. Set the Extends property to point to the table on which the derived table is based. Set these properties before you create any fields for the table. This will help ensure that all fields in tables in the hierarchy have unique names and IDs, which is necessary for the run time to work correctly. It also makes it possible to choose different storage models, such as storing all types in a single table, without causing name collisions.
(с) Inside Microsoft Dynamics AX 2012
За это сообщение автора поблагодарили: vmoskalenko (6).
Старый 18.02.2022, 21:26   #2  
Zabr is offline
Zabr
Участник
Axapta Retail User
 
1,202 / 345 (14) ++++++
Регистрация: 26.06.2002
Адрес: Москва
Есть три таблицы, 2-я наследуется от 1-ой, 3-я от 2-ой.
Table1 -> Table2 -> Table3.

К 3-ей таблице выполняется запрос по трем полям, который работает несколько медленно. Полагаю, что дело в отсутствии индекса со всеми этими полями. В таблице 3 миллиона записей, но тормозит так, будто их 100 млн. Однако сделать такой индекс не представляется возможным, поскольку 1-е поле из table1, 2-е поле из table2, 3-е поле из table3.

Вопрос: как быть ? Поможет ли создание 3-х индексов в каждой таблице отдельно по тому полю, которое есть в ней? (мне кажется,.что не поможет)

Возможно, вопрос дурацкий, или ответ давно известен - но я его не знаю. И лучше спросить, чем не спросить.
Старый 18.02.2022, 22:08   #3  
sukhanchik is offline
sukhanchik
Administrator
Аватар для sukhanchik
MCBMSS
Злыдни
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,342 / 3563 (125) ++++++++++
Регистрация: 13.06.2004
Адрес: Москва
Цитата:
Сообщение от Zabr Посмотреть сообщение
Вопрос: как быть ? Поможет ли создание 3-х индексов в каждой таблице отдельно по тому полю, которое есть в ней? (мне кажется,.что не поможет)
Может немного помочь создание индекса по наиболее селективному полю (т.е. по полю, в котором содержится наибольшее количество уникальных данных). Но это будет частичное ускорение (в идеале - нужен индекс по трем полям, которые будут расположены в индексе в порядке убывания селективности).

Ну а в общем случае всегда может помочь индекс, созданный на стороне БД вместе с триггером, запрещающим удалять индекс из таблицы на этапе синхронизации. Т.е. как только количество таблиц с большим объемом данных переваливает некоторое значение - становится оправданным управление индексами изнутри БД, а не из АХ.
Правда в случае с облачной D365FO с управлением БД несколько сложнее, но там вопрос спорный вообще, как работать с большими объемами.
__________________
Возможно сделать все. Вопрос времени
Старый 22.02.2022, 08:01   #4  
SRF is offline
SRF
Участник
MCBMSS
Axapta Retail User
 
376 / 562 (19) +++++++
Регистрация: 08.08.2007
Записей в блоге: 1
Цитата:
Сообщение от Zabr Посмотреть сообщение
Однако сделать такой индекс не представляется возможным, поскольку 1-е поле из table1, 2-е поле из table2, 3-е поле из table3.
В среде разработки нет, а вот экспортом\импортом через xpo файлик вроде работает, по крайней мере в R3, я проверял по EcoResProductMasterConfiguration\EcoResProductMasterDimensionValue, создал индекс на EcoResProductMasterConfiguration по полю RetailDisplayOrder из EcoResProductMasterDimensionValue.
__________________
Sergey Nefedov
Старый 22.02.2022, 21:34   #5  
Zabr is offline
Zabr
Участник
Axapta Retail User
 
1,202 / 345 (14) ++++++
Регистрация: 26.06.2002
Адрес: Москва
Цитата:
Сообщение от SRF Посмотреть сообщение
В среде разработки нет, а вот экспортом\импортом через xpo файлик вроде работает, по крайней мере в R3.
После импорта такой индекс стал виден в среде разработки?
PS У меня R2.
Старый 24.02.2022, 08:13   #6  
SRF is offline
SRF
Участник
MCBMSS
Axapta Retail User
 
376 / 562 (19) +++++++
Регистрация: 08.08.2007
Записей в блоге: 1
Да, поля там видны и при этом синхронизация проходит нормально.

Т.е. алгоритм такой - вы создаете индекс в среде, добавляете поля из дочерней таблички, которые нужны, дальше делаете экспорт в xpo, там в файл добавляете поля из базовых табличек и делаете импорт, все поля индекса будут видны в среде разработки.

Возможно это ограничение самой ранней версии механизма наследования в 2012, насколько я помню до r2 базовые и дочерние таблички были физически разными объектами на скл, поэтому такой индекс действительно нельзя было создать в принципе.
__________________
Sergey Nefedov
Теги
запросы, индекс, наследование таблиц, оптимизация

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Передача таблицы TempDB по маршруту класс1-форма-класс2, как правильно? mikki_messer DAX: Программирование 7 15.07.2019 16:07
Отмена использования временной таблицы в FormDatasource A_BAS DAX: Программирование 4 02.03.2013 21:11
Пересоздание таблицы при синхронизации Serg16 DAX: Администрирование 1 26.08.2009 13:55
Вставка строк в таблицы Аксапты сторонними средствами Андре DAX: База знаний и проекты 1 07.05.2009 16:49
Получение из поля Map кода поля реальной таблицы, к ней привязанной (Mappings) vey DAX: Функционал 5 16.03.2005 11:16
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра
Комбинированный вид Комбинированный вид

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 19:01.