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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 17.10.2025, 06:56   #1  
Perc is offline
Perc
Участник
 
198 / 57 (2) ++++
Регистрация: 05.03.2005
Кластерный индекс в DimensionAttributeValueSetItem
Dax2012
Смотрю на таблицу DimensionAttributeValueSetItem и не понимаю почему у нее кластерный индекс по RecId. Зачем?
По перекрёстным ссылкам нет вообще использования поиска по RecId. Таблица достаточно объемная может быть, и используется повсеместно.
В целях оптимизации запросов к ней ставлю ей кластерный индекс ValueSetAttributeValueIdx.
А индекс по RecId по сути можно вообще выключить получается?
Старый 17.10.2025, 11:25   #2  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,450 / 1792 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Выигрыш от экономии отдельного места для хранения некластерного индекса и скорости выбора данных может нивелироваться затратами на перемещение этих данных в момент вставки в середину индекса
Старый 17.10.2025, 14:14   #3  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
4,000 / 3298 (118) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Цитата:
Сообщение от Perc Посмотреть сообщение
А индекс по RecId по сути можно вообще выключить получается?
Совсем не получится. Там есть методы find / exist которые его используют.
Да и чем он вам мешает.

Кстати, а в InventTrans вас кластерный индекс не смущает ? Не великоват для кластерного для такой большой таблички?
Старый 17.10.2025, 14:56   #4  
Perc is offline
Perc
Участник
 
198 / 57 (2) ++++
Регистрация: 05.03.2005
Цитата:
Сообщение от S.Kuskov Посмотреть сообщение
Выигрыш от экономии отдельного места для хранения некластерного индекса и скорости выбора данных может нивелироваться затратами на перемещение этих данных в момент вставки в середину индекса
Вставок у данной таблицы тотально меньше чем выборок. Да и экономить я пытаюсь не на объеме хранения.
Таблица используется во вьюхах и запросах где тянется и поле DisplayValue. Любая форма, отчет показывающая аналитику по DefaultDimension лезет туда.
А это значит скл серверу при выполнение запроса надо делать дополнительные поиск. Т.е. он сначала по индексу ValueSetAttributeValueIdx поищет ключ RecId, а потом по RecId будет делать еще один поиск по индексу RecId, чтобы найти DisplayValue.

Когда озадачился этим вопросом посмотрел на аналогичную таблицу DimensionAttributeLevelValue для LedgerDimension. И там оказывается все норм на sys-слое. Там подумали и сразу сделали кластерным индекс не по RecId, а DimensionAttributeValueIdx.

PS. Да, подумал насчет вставки якобы в середину. Индекс ValueSetAttributeValueIdx он по DimensionAttributeValueSet, DimensionAttributeValue. Т.е. любая новая вставка это новый пакет DimensionAttributeValueSet. А значит по индексу ValueSetAttributeValueIdx вставки тоже всегда будут в конец. Так что даже тут проблемы нет.

Последний раз редактировалось Perc; 17.10.2025 в 15:10.
Старый 17.10.2025, 15:03   #5  
Perc is offline
Perc
Участник
 
198 / 57 (2) ++++
Регистрация: 05.03.2005
Цитата:
Сообщение от Logger Посмотреть сообщение
Совсем не получится. Там есть методы find / exist которые его используют.
Да и чем он вам мешает.

Кстати, а в InventTrans вас кластерный индекс не смущает ? Не великоват для кластерного для такой большой таблички?
В find / exist он используется, да только find / exist нигде не используются.

В InventTrans он меня не смущает, потому что много достаточно мест где он используется. Например InventSettlement

Цитата:
Не великоват для кластерного для такой большой таблички?
Это замечание вообще не переварил, что хотели сказать.
Старый 17.10.2025, 16:01   #6  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,723 / 1208 (44) ++++++++
Регистрация: 13.01.2004
Записей в блоге: 3
Цитата:
Сообщение от Perc Посмотреть сообщение
Таблица используется во вьюхах и запросах где тянется и поле DisplayValue. Любая форма, отчет показывающая аналитику по DefaultDimension лезет туда.
А это значит скл серверу при выполнение запроса надо делать дополнительные поиск. Т.е. он сначала по индексу ValueSetAttributeValueIdx поищет ключ RecId, а потом по RecId будет делать еще один поиск по индексу RecId, чтобы найти DisplayValue.
Вопрос в том, что именно ищет запрос? Там же 2 поля и вот по какому из них идет поиск?

То, что описано - это отображение аналитики документа. Т.е. ищем от DefaultDimension.

Но может же быть обратная ситуация. Найти документ с указанной аналитикой. Т.е. поиск от DimensionAttribute. И тогда ситуация станет только хуже
__________________
- Может, я как-то неправильно живу?!
- Отчего же? Правильно. Только зря...
Старый 17.10.2025, 17:02   #7  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
4,000 / 3298 (118) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Цитата:
Сообщение от Perc Посмотреть сообщение
Это замечание вообще не переварил, что хотели сказать.
А вы посмотрите статистику в сиквеле. Сколько там сама табличка места занимает, а сколько индексы. Для InventTrans объем индексов с запасом превосходит объем таблицы.
Старый 17.10.2025, 19:47   #8  
Perc is offline
Perc
Участник
 
198 / 57 (2) ++++
Регистрация: 05.03.2005
Цитата:
Сообщение от Владимир Максимов Посмотреть сообщение
Но может же быть обратная ситуация. Найти документ с указанной аналитикой. Т.е. поиск от DimensionAttribute. И тогда ситуация станет только хуже
Отчего хуже? Индекса по DimensionArrtibute нет, поэтому если уж sql-оптимизатор решит искать от этой таблицы, то будет скан кластерного индекса, либо скан индекса, потом если потребуется поиск по ключу. Выгода мелкая ожидается только если не потребуется, поиск по ключу. И мелкая она будет потому что полей в таблице мало и разница между индексом и кластерным индексом всего два поля displayvalue и recversion. Ну может в 2 раза объем, посмотреть можно. Да и запрос такой в быту очень экзотическим выглядит. Уж из формы вы точно будете по displayvalue фильтровать, а не по dimensionAttribute

Последний раз редактировалось Perc; 17.10.2025 в 20:19.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Кластерный индекс на InventTrans в AX 4.0 Ivanhoe DAX: Администрирование 42 23.03.2016 16:42
Таблица InventSumDeltaDim и индекс EfimV DAX: Программирование 2 30.11.2010 22:19
Как работает индекс и кеш запросов? Didukh84 DAX: Программирование 19 02.06.2009 10:42
CustInvoiceTrans кластерный индекс Tarrash DAX: Программирование 25 25.03.2008 10:25
Кластерный индекс DreamCreator DAX: Программирование 2 05.10.2005 10:06

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

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

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