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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 22.08.2008, 19:30   #1  
York is offline
York
Участник
 
8 / 12 (1) ++
Регистрация: 11.08.2008
RecId и уникальный индекс
Здравствуйте, уважаемые.
Блуждая по просторам аксаптовских табличек обнаружил для себя загадочное сочетание полей в индексе ItemIdx таблицы PurchLine: ItemId и RecId. В принципе, удивляет не само сочетаение, а тот факт, что индекс сделан уникальным. Спрашивается: зачем? Насколько я могу судить, RecId никогда не может повторяться, тогда не понятно явное указание уникальности.
Спасибо.
Старый 22.08.2008, 21:57   #2  
sukhanchik is offline
sukhanchik
Administrator
Аватар для sukhanchik
MCBMSS
Злыдни
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,275 / 3476 (122) ++++++++++
Регистрация: 13.06.2004
Адрес: Москва
На ум приходит только следующее. Есть запрос с выборкой по этим двум полям. Поэтому сделан индекс. Почему он уникальный? Я ошибаюсь или по униклаьному индексу быстрее выборка идет? Если быстрее - то вот и ответ - для оптимизации. Если нет.. ну тогда видимо просто наложили лишнее ограничение... оно ж никому не мешает...
__________________
Возможно сделать все. Вопрос времени
Старый 25.08.2008, 10:08   #4  
oip is offline
oip
Axapta
Лучший по профессии 2014
 
2,564 / 1416 (53) ++++++++
Регистрация: 28.11.2005
Записей в блоге: 1
Не-не-не, Девид Блейн.

В SalesLine уже есть уникальный индекс TransIdIdx, так что тут не совсем о "волшебном превращение неуникального индекса". Тем более, что это "превращение" происходит на уровне скуля, я не Аксапты.
__________________
С уважением,
Олег.
Старый 25.08.2008, 10:47   #5  
oip is offline
oip
Axapta
Лучший по профессии 2014
 
2,564 / 1416 (53) ++++++++
Регистрация: 28.11.2005
Записей в блоге: 1
X++:
static void findAllIndexesWithRecId(Args _args)
{
    Dictionary dict = new Dictionary();
    DictTable  dictTable;
    DictIndex  dictIndex;
    int        tableCount;
    int        indexCount;
    int        fieldCount;
    FieldId    fieldId;
    FieldId    recIdFieldId;

    #define.RecId('RecId')
;
    for (tableCount=1;tableCount<=dict.tableCnt();tableCount++)
    {
        dictTable = new DictTable(dict.tableCnt2Id(tableCount));
        if (!dictTable.isMap() &&
            !dictTable.isSystemTable() &&
            !dictTable.isTmp() &&
            !dictTable.isView())
        {
           recIdFieldId = new DictField(dictTable.id(), fieldName2id(dictTable.id(), #RecId)).id();
           for(indexCount=0;indexCount < dictTable.indexCnt();indexCount++)
           {
               dictIndex = new DictIndex(dict.tableCnt2Id(tableCount),  dictTable.indexNext(indexCount));
               for (fieldCount=0; fieldCount<= dictIndex.numberOfFields();fieldCount++)
               {
                    fieldId = dictIndex.field(fieldCount);
                    if ((fieldId == recIdFieldId) && strFmt('%1', dictIndex.name()) != #RecId)
                    {
                        info (dictTable.name() + ' - ' + dictIndex.name() + ' - ' + strFmt('%1', dictIndex.allowDuplicates()));
                    }
               }
            }
        }
    }
}
Почти все уникальные, но есть и неуникальные.Я думаю особого совсем уж глубокого смысла во всем этом нет.
__________________
С уважением,
Олег.
За это сообщение автора поблагодарили: York (1).
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
if (record) vs if (record.RecId) kashperuk DAX: Программирование 18 27.11.2008 18:53
поля, содержащие RecId somebody DAX: Программирование 15 16.05.2008 17:50
aEremenko: Дефрагментация RecID Blog bot DAX Blogs 2 06.03.2007 22:25
Два RecId у одной записи таблицы sparur DAX: Программирование 33 18.12.2006 15:56
Уникальный индекс по Dimension DreamCreator DAX: Программирование 5 26.05.2006 12:57
Опции темы Поиск в этой теме
Поиск в этой теме:

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

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

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

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 17:17.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.