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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 11.12.2015, 08:46   #1  
demianimp is offline
demianimp
Участник
 
202 / 104 (4) +++++
Регистрация: 10.10.2013
create nonclustered index + include
Добрый день.

Отловил у себя жирный запрос.
SQL выдал рекомендацию, что нужно создать индекс:
CREATE NONCLUSTERED INDEX [IndexName]
ON TableName (FieldN1, FieldN2)
INCLUDE (FieldN3, FieldN4, FieldN5, FieldN6)

У нас SQL2008 и AX 2009.
Первую часть рекомендацию я могу решить средствами AX, но как можно средствами AX сделать ...INCLUDE (FieldN3, FieldN4, FieldN5, FieldN6) ?

Если это сделать на SQL, то первая переиндексация таблицы удалит и создаст новый индекс.
Старый 11.12.2015, 09:20   #2  
KiselevSA is offline
KiselevSA
Злыдни
Аватар для KiselevSA
Злыдни
Лучший по профессии 2015
 
958 / 333 (13) ++++++
Регистрация: 25.01.2002
Адрес: Москва
В 2009 версии не получится. Единственным решением будет создать индекс в SQL, заскриптовать его и восстанавливать после синхронизации БД.
Интересно, а кто-нибудь реализовывал следующий алгоритм:
- создание хранимки на SQL для восстановления индексов (типа, sp_restoreindex);
- вызов хранимой процедуры после окончания работы Application.dbSynchronize()?
__________________
люди...считают, что если техника не ломается, то ее не нужно ремонтировать. Инженеры считают, что если она не ломается, то нуждается в совершенствовании.
За это сообщение автора поблагодарили: demianimp (1).
Старый 11.12.2015, 11:01   #3  
demianimp is offline
demianimp
Участник
 
202 / 104 (4) +++++
Регистрация: 10.10.2013
Цитата:
Сообщение от KiselevSA Посмотреть сообщение
В 2009 версии не получится. Единственным решением будет создать индекс в SQL, заскриптовать его и восстанавливать после синхронизации БД.
А в 6+ это возможность появилась?

Цитата:
Сообщение от KiselevSA Посмотреть сообщение
Интересно, а кто-нибудь реализовывал следующий алгоритм:
- создание хранимки на SQL для восстановления индексов (типа, sp_restoreindex);
- вызов хранимой процедуры после окончания работы Application.dbSynchronize()?
Все равно како-то костыль получается. Так можно сразу на SQL создать эти индексы, без участие аксапты. Только отслеживать очень трудно.
Старый 11.12.2015, 11:05   #4  
db is offline
db
Роман Долгополов (RDOL)
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
 
393 / 692 (24) +++++++
Регистрация: 01.04.2004
Адрес: Москва
получится и на 2009
надо создать индекс в аот с (FieldN1, FieldN2)
а через менеджмент студию или sql добавить INCLUDE поля.
2009 про INCLUDE ничего не знает и не проверяет есть ли они или нет - если основные поля на месте то индекс считается годным и синхронизация его не трогает. Другое дело, что если что то поменяете в структуре индекса относительно основных полей, то при перестроении из аксапты INCLUDE, естественно, пропадут. Для защиты таких "полусамодельных" индексов можно добавить DDL триггер который будет отсекать DROP и ALTER в отношении индекса, если команда идет от пользователя под которым крутится АОС.

да, в 2012 INCLUDE штатная возможность

Последний раз редактировалось db; 11.12.2015 в 11:09.
За это сообщение автора поблагодарили: trud (4), Logger (1), demianimp (1).
Старый 11.12.2015, 11:16   #5  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,651 / 1158 (42) ++++++++
Регистрация: 13.01.2004
Записей в блоге: 3
В принципе, вместо опции INCLUDE указанные поля можно включить в список полей индекса. Результат оптимизации запроса будет тот же, хотя, конечно, сам индекс "тяжелее".

CREATE NONCLUSTERED INDEX [IndexName]
ON TableName (FieldN1, FieldN2, FieldN3, FieldN4, FieldN5, FieldN6)

Но, вообще-то, рекомендации SQL - это именно рекомендации. Далеко не факт, что даже наличие соответствующего индекса приведет к ускорению выполнения запроса. И даже если выполнение запроса ускорится "сейчас" не факт, что с увеличением количества записей оптимальный план выполнения запроса не изменится.

Тут надо пробовать разные варианты. Может, не индекс надо создать, а сам запрос изменить.
__________________
- Может, я как-то неправильно живу?!
- Отчего же? Правильно. Только зря...
За это сообщение автора поблагодарили: demianimp (1).
Старый 11.12.2015, 15:21   #6  
demianimp is offline
demianimp
Участник
 
202 / 104 (4) +++++
Регистрация: 10.10.2013
Спасибо всем.

Вы подтвердили мои догадки.
Старый 14.12.2015, 08:50   #7  
demianimp is offline
demianimp
Участник
 
202 / 104 (4) +++++
Регистрация: 10.10.2013
Друзья, а может кто нибудь скинуть прискрин с 2012, как выглядит настройка индекса с INCLUDE?
Старый 14.12.2015, 09:27   #8  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2476 (88) +++++++++
Регистрация: 20.08.2005
http://dev.goshoom.net/en/2012/04/in...mns-in-ax2012/
__________________
Axapta v.3.0 sp5 kr2
За это сообщение автора поблагодарили: Logger (1), demianimp (1).
Старый 14.12.2015, 10:56   #9  
demianimp is offline
demianimp
Участник
 
202 / 104 (4) +++++
Регистрация: 10.10.2013
Цитата:
Спасибо большое. Примерно так и представлял.
Теги
axapta, sql 2008, индекс, ax2009

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
emeadaxsupport: AX Performance Troubleshooting Checklist Part 2 Blog bot DAX Blogs 0 09.09.2014 16:11
atinkerersnotebook: Walkthrough & Tutorial Summary Blog bot DAX Blogs 1 09.09.2013 09:11
axStart: Cluster index Blog bot DAX Blogs 0 23.09.2012 00:11
Rajdip's space: The mystery of "index" vs. "index hint" Blog bot DAX Blogs 0 20.04.2010 20:05
axperf: Create RecID index on tables with Created/Modified DateTime fields Blog bot DAX Blogs 0 20.06.2009 10:05
Опции темы Поиск в этой теме
Поиск в этой теме:

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

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

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

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