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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 24.11.2015, 19:11   #1  
Morpheus is offline
Morpheus
Участник
Аватар для Morpheus
Соотечественники
 
602 / 167 (7) ++++++
Регистрация: 30.03.2005
Адрес: Київ-København-Düsseldorf
Это текст и план стандартного SQL зароса (новый индекс не отключал, т.к. на план выполнения он не повлиял):

X++:
SELECT T1.RECID,
	T2.RECID,
	T2.DATAAREAID,
	T3.TRANSDATE,
	T3.DOCUMENTNUM,
	T3.INVOICE,
	T3.PAYMID,
	T3.VOUCHER,
	T3.DATAAREAID,
	T3.RECID 
FROM SPECTRANS T1 CROSS 
JOIN VENDTRANSOPEN T2 CROSS 
JOIN VENDTRANS T3 
WHERE ((T1.PARTITION=5637144576) 
	AND (((T1.SPECCOMPANY='DA1') 
	AND (T1.SPECTABLEID=212)) 
	AND (T1.SPECRECID=17852886295))) 
	AND ((T2.PARTITION=5637144576) 
	AND (((T2.DATAAREAID=T1.REFCOMPANY) 
	AND (T1.REFTABLEID=866)) 
	AND (T2.RECID=T1.REFRECID))) 
	AND ((T3.PARTITION=5637144576) 
	AND (T3.RECID=T2.REFRECID 
	AND (T3.DATAAREAID = T2.DATAAREAID) 
	AND (T3.PARTITION = T2.PARTITION))) 
	ORDER BY T1.RECID
Нажмите на изображение для увеличения
Название: ExecPlan1.JPG
Просмотров: 479
Размер:	31.7 Кб
ID:	9434

А это текст и план отрефакторенного SQL зароса:

X++:
SELECT T1.TRANSDATE,
       T1.DOCUMENTNUM,
       T1.INVOICE,
       T1.PAYMID,
       T1.VOUCHER,
       T1.RECID,
       T2.RECID,
       T3.RECID
  FROM VENDTRANS T1 CROSS
  JOIN VENDTRANSOPEN T2 CROSS
  JOIN SPECTRANS T3
 WHERE ((T1.PARTITION=5637144576)
   AND (T1.DATAAREAID='DA1'))
   AND (((T2.PARTITION=5637144576)
   AND (T2.DATAAREAID='DA1'))
   AND (T2.REFRECID=T1.RECID))
   AND ((T3.PARTITION=5637144576)
   AND ((((((T3.REFCOMPANY=T2.DATAAREAID)
   AND (T3.REFTABLEID=866))
   AND (T3.REFRECID=T2.RECID))
   AND (T3.SPECCOMPANY='DA1'))
   AND (T3.SPECTABLEID=212))
   AND (T3.SPECRECID=17852886295)))
Нажмите на изображение для увеличения
Название: ExecPlan2.JPG
Просмотров: 280
Размер:	46.2 Кб
ID:	9435
Старый 24.11.2015, 20:57   #2  
GannexMan is offline
GannexMan
Участник
 
5 / 13 (1) ++
Регистрация: 07.06.2006
Думаю, что план запроса лучше не стал.
Если в первом варианте, было два кластерных индекса,
то во втором только один.
Получили Key Lookup и жесткий удар по производительности.

Во втором случае одна и та же таблица VendTrans выдала разное кол-во записей.
В последнем запросе явно указано для всех таблиц данные брать только из DA1, возможно это и объясняет поведение, оптимизатор ограничил кол-во записей по выбранной компании, а не по всем

AND (T3.RECID=T2.REFRECID
AND (T3.DATAAREAID = T2.DATAAREAID)
AND (T3.PARTITION = T2.PARTITION)))

Судя по тому, как был написан первоначальный запрос,
складывается впечатление, что его "выгибали" так специально.

Если, ограничить VendTrans явным указанием DATAAREAID,
оригинальный запрос будет намного быстрей.

Последний раз редактировалось GannexMan; 24.11.2015 в 21:02.
За это сообщение автора поблагодарили: Morpheus (3).
Старый 25.11.2015, 11:27   #3  
Morpheus is offline
Morpheus
Участник
Аватар для Morpheus
Соотечественники
 
602 / 167 (7) ++++++
Регистрация: 30.03.2005
Адрес: Київ-København-Düsseldorf
Цитата:
Сообщение от GannexMan Посмотреть сообщение
Получили Key Lookup и жесткий удар по производительности.
Key Lookup можно устранить, добавив IncludedColumn(s) поля в индекс.

Коллеги, у вас есть возможность проверить на ваших инсталляциях, быстро ли закрывается форма сопоставлений? Для теста необходимо создать в журнал ГК транзакцию платеж для клиента или поставщика и сопоставить ее с инвойсом при помощи меню Функции/Сопоставление на форме строк журнала ГК. После сопоставления закрыть форму и оценить, как быстро она закроется.
Старый 25.11.2015, 11:44   #4  
Vadik is offline
Vadik
Модератор
Аватар для Vadik
Лучший по профессии 2017
Лучший по профессии 2015
 
3,631 / 1853 (69) ++++++++
Регистрация: 18.11.2002
Адрес: гражданин Москвы
Цитата:
Сообщение от Morpheus Посмотреть сообщение
Коллеги, у вас есть возможность проверить на ваших инсталляциях, быстро ли закрывается форма сопоставлений?
У меня на CU7 - быстро (DATAAREAIDLITERAL и PARTITIONLITERAL - включены)
__________________
-ТСЯ или -ТЬСЯ ?
За это сообщение автора поблагодарили: Morpheus (3).
Старый 25.11.2015, 12:01   #5  
Morpheus is offline
Morpheus
Участник
Аватар для Morpheus
Соотечественники
 
602 / 167 (7) ++++++
Регистрация: 30.03.2005
Адрес: Київ-København-Düsseldorf
Цитата:
Сообщение от Vadik Посмотреть сообщение
У меня на CU7 - быстро (DATAAREAIDLITERAL и PARTITIONLITERAL - включены)
А какая у Вас версия БД?
Старый 25.11.2015, 12:12   #6  
Vadik is offline
Vadik
Модератор
Аватар для Vadik
Лучший по профессии 2017
Лучший по профессии 2015
 
3,631 / 1853 (69) ++++++++
Регистрация: 18.11.2002
Адрес: гражданин Москвы
Цитата:
Сообщение от Morpheus Посмотреть сообщение
А какая у Вас версия БД?
На инстансе с которым я сейчас плотно работаю - SQL Server 2008 R2 EE
__________________
-ТСЯ или -ТЬСЯ ?
Старый 25.11.2015, 12:24   #7  
ZVV is offline
ZVV
MCITP
MCP
Oracle
MCBMSS
 
1,006 / 246 (11) ++++++
Регистрация: 13.02.2004
Адрес: Минск
->
Попробуйте для интереса пересобрать свежую SQL статистику для участвующих таблиц.
__________________
Zhirenkov Vitaly
За это сообщение автора поблагодарили: Morpheus (3).
Старый 25.11.2015, 12:38   #8  
Morpheus is offline
Morpheus
Участник
Аватар для Morpheus
Соотечественники
 
602 / 167 (7) ++++++
Регистрация: 30.03.2005
Адрес: Київ-København-Düsseldorf
Цитата:
Сообщение от Vadik Посмотреть сообщение
На инстансе с которым я сейчас плотно работаю - SQL Server 2008 R2 EE
У меня работает SQL Server 2008 R2 SP1 SE.
Старый 25.11.2015, 12:29   #9  
Morpheus is offline
Morpheus
Участник
Аватар для Morpheus
Соотечественники
 
602 / 167 (7) ++++++
Регистрация: 30.03.2005
Адрес: Київ-København-Düsseldorf
Цитата:
Сообщение от Vadik Посмотреть сообщение
У меня на CU7 - быстро (DATAAREAIDLITERAL и PARTITIONLITERAL - включены)
Включение DATAAREAIDLITERAL и PARTITIONLITERAL не помогло.
Теги
ax2012r2, performance, slow, тормоза

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
kurthatlevik: SYNC for AX 2012 R2 CU7 Blog bot DAX Blogs 0 08.11.2013 21:11
emeadaxsupport: New and updated content is available for cumulative update 6 for Microsoft Dynamics AX 2012 R2 Blog bot DAX Blogs 0 27.06.2013 19:11
amer-ax: It was a great day! Blog bot DAX Blogs 3 29.12.2012 01:02
daxdilip: Whats New in Dynamics AX 2012 (A brief extract from the recently held Tech Conf.) Blog bot DAX Blogs 7 31.01.2011 12:35
Русская локализация Axapta 3 ? SlavaK DAX: Администрирование 59 01.07.2003 22:38
Опции темы Поиск в этой теме
Поиск в этой теме:

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

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

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

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