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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 19.07.2011, 15:47   #61  
fed is offline
fed
Moderator
Аватар для fed
Ex AND Project
Соотечественники
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
2,907 / 5717 (196) ++++++++++
Регистрация: 13.03.2002
Адрес: Hüfingen,DE
Цитата:
Сообщение от AndyD Посмотреть сообщение
А я добавлю еще один гвоздь

Уникальные индексы НЕ ДОБАВЛЯЮТ дополнительные столбцы в корневую и промежуточные страницы. При этом, если таблица не имеет кластерный индекс, то на последнем уровне есть информация об Heap RID. Для таблицы с кластерным индексом на последнем уровне добавляется информация из кластерного ключа.
Тогда понятно, зачем добавлять RecId и помечать индекс как уникальный. Исключительно чтобы сэкономить место в нелистовых страницах.
Старый 19.07.2011, 15:50   #62  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2479 (88) +++++++++
Регистрация: 20.08.2005
Мэй би.
Оставлось выяснить - а знает ли тот, кто добавляет, об этом
__________________
Axapta v.3.0 sp5 kr2
Старый 19.07.2011, 23:26   #63  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2479 (88) +++++++++
Регистрация: 20.08.2005
Цитата:
Сообщение от fed Посмотреть сообщение
Тогда понятно, зачем добавлять RecId и помечать индекс как уникальный. Исключительно чтобы сэкономить место в нелистовых страницах.
А тут, кстати, вопрос - а есть ли экономия?

Для тройки - это 4 байта с одной записи (Heap RID - 64-х битный, RecId - 32-х битный). Если учесть, что большинство ключей в Аксапте строковые и размер их довольно сильно варьируется, а так же есть служебные данные, то выигрыш может быть и того меньше.

Для примера - на таблице InventTable индекс по RecId. Разница в размере промежуточных страниц и конечной - 2 байта (18 против 20 байт).
На таблице InventTrans (без кластерного индекса), так же индекс по RecId. Разница - те же два байта.

А для четверки и выше - выигрыша уже вообще не будет (RecId ведь тоже 64-х битный).


Так что, не думаю, что это соображение может быть руководством к действию
__________________
Axapta v.3.0 sp5 kr2
Старый 20.07.2011, 11:30   #64  
fed is offline
fed
Moderator
Аватар для fed
Ex AND Project
Соотечественники
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
2,907 / 5717 (196) ++++++++++
Регистрация: 13.03.2002
Адрес: Hüfingen,DE
Цитата:
Сообщение от AndyD Посмотреть сообщение
А тут, кстати, вопрос - а есть ли экономия?

Для тройки - это 4 байта с одной записи (Heap RID - 64-х битный, RecId - 32-х битный). Если учесть, что большинство ключей в Аксапте строковые и размер их довольно сильно варьируется, а так же есть служебные данные, то выигрыш может быть и того меньше.

Для примера - на таблице InventTable индекс по RecId. Разница в размере промежуточных страниц и конечной - 2 байта (18 против 20 байт).
На таблице InventTrans (без кластерного индекса), так же индекс по RecId. Разница - те же два байта.

А для четверки и выше - выигрыша уже вообще не будет (RecId ведь тоже 64-х битный).


Так что, не думаю, что это соображение может быть руководством к действию
Начиная с 4ки, почти все таблицы переведены на кластерные индексы. Соответственно - оверхид на нелистовых страницах побольше будет (поскольку как правило - кластерные индексы это DataAreaid+наследник SysGroup).

К слову сказать, кластерные индексы по inventTrans и reqTrans (не самых мелких таблицах в системе) построены по слишком длинным ключам.
Теги
index, indexunique, recid, индекс

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
axperf: Create RecID index on tables with Created/Modified DateTime fields Blog bot DAX Blogs 0 20.06.2009 10:05
Главная книга / Запросы / Аудит (TransactionLog) Зачем и кому он нужен? ta_and DAX: Функционал 18 24.09.2008 10:14
RecId и уникальный индекс York DAX: Программирование 4 25.08.2008 10:47
зачем нужен WebTarget? yooshi DAX: Программирование 0 11.11.2005 14:22
Зачем таблице нужен релэйшн на саму себя? Artild DAX: Программирование 2 21.07.2003 11:52

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

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

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