|
|
#1 |
|
Участник
|
Кластерный индекс в DimensionAttributeValueSetItem
Dax2012
Смотрю на таблицу DimensionAttributeValueSetItem и не понимаю почему у нее кластерный индекс по RecId. Зачем? По перекрёстным ссылкам нет вообще использования поиска по RecId. Таблица достаточно объемная может быть, и используется повсеместно. В целях оптимизации запросов к ней ставлю ей кластерный индекс ValueSetAttributeValueIdx. А индекс по RecId по сути можно вообще выключить получается? |
|
|
|
|
#2 |
|
Участник
|
Выигрыш от экономии отдельного места для хранения некластерного индекса и скорости выбора данных может нивелироваться затратами на перемещение этих данных в момент вставки в середину индекса
|
|
|
|
|
#3 |
|
Участник
|
Совсем не получится. Там есть методы find / exist которые его используют.
Да и чем он вам мешает. Кстати, а в InventTrans вас кластерный индекс не смущает ? Не великоват для кластерного для такой большой таблички? |
|
|
|
|
#4 |
|
Участник
|
Цитата:
Таблица используется во вьюхах и запросах где тянется и поле DisplayValue. Любая форма, отчет показывающая аналитику по DefaultDimension лезет туда. А это значит скл серверу при выполнение запроса надо делать дополнительные поиск. Т.е. он сначала по индексу ValueSetAttributeValueIdx поищет ключ RecId, а потом по RecId будет делать еще один поиск по индексу RecId, чтобы найти DisplayValue. Когда озадачился этим вопросом посмотрел на аналогичную таблицу DimensionAttributeLevelValue для LedgerDimension. И там оказывается все норм на sys-слое. Там подумали и сразу сделали кластерным индекс не по RecId, а DimensionAttributeValueIdx. PS. Да, подумал насчет вставки якобы в середину. Индекс ValueSetAttributeValueIdx он по DimensionAttributeValueSet, DimensionAttributeValue. Т.е. любая новая вставка это новый пакет DimensionAttributeValueSet. А значит по индексу ValueSetAttributeValueIdx вставки тоже всегда будут в конец. Так что даже тут проблемы нет. Последний раз редактировалось Perc; 17.10.2025 в 15:10. |
|
|
|
|
#5 |
|
Участник
|
Цитата:
В InventTrans он меня не смущает, потому что много достаточно мест где он используется. Например InventSettlement Цитата:
Не великоват для кластерного для такой большой таблички?
|
|
|
|
|
#6 |
|
Участник
|
Цитата:
Сообщение от Perc
Таблица используется во вьюхах и запросах где тянется и поле DisplayValue. Любая форма, отчет показывающая аналитику по DefaultDimension лезет туда.
А это значит скл серверу при выполнение запроса надо делать дополнительные поиск. Т.е. он сначала по индексу ValueSetAttributeValueIdx поищет ключ RecId, а потом по RecId будет делать еще один поиск по индексу RecId, чтобы найти DisplayValue. То, что описано - это отображение аналитики документа. Т.е. ищем от DefaultDimension. Но может же быть обратная ситуация. Найти документ с указанной аналитикой. Т.е. поиск от DimensionAttribute. И тогда ситуация станет только хуже
__________________
- Может, я как-то неправильно живу?! - Отчего же? Правильно. Только зря... |
|
|
|
|
#7 |
|
Участник
|
|
|
|
|
|
#8 |
|
Участник
|
Отчего хуже? Индекса по DimensionArrtibute нет, поэтому если уж sql-оптимизатор решит искать от этой таблицы, то будет скан кластерного индекса, либо скан индекса, потом если потребуется поиск по ключу. Выгода мелкая ожидается только если не потребуется, поиск по ключу. И мелкая она будет потому что полей в таблице мало и разница между индексом и кластерным индексом всего два поля displayvalue и recversion. Ну может в 2 раза объем, посмотреть можно. Да и запрос такой в быту очень экзотическим выглядит. Уж из формы вы точно будете по displayvalue фильтровать, а не по dimensionAttribute
Последний раз редактировалось Perc; 17.10.2025 в 20:19. |
|
|
|
|
Похожие темы
|
||||
| Тема | Ответов | |||
| Кластерный индекс на InventTrans в AX 4.0 | 42 | |||
| Таблица InventSumDeltaDim и индекс | 2 | |||
| Как работает индекс и кеш запросов? | 19 | |||
| CustInvoiceTrans кластерный индекс | 25 | |||
| Кластерный индекс | 2 | |||
|