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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 08.12.2016, 13:31   #1  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от Pokersky09 Посмотреть сообщение
Пишется обычный запрос на Ах:

X++:
select RecId from Header

join RecID from line
where line.headerRecid == Header.RecId
&&     line.someField    == 12345
в Аксапте нигде хинта forceNestedLoop не стоит?
Старый 08.12.2016, 14:00   #2  
Pokersky09 is offline
Pokersky09
Участник
 
43 / 60 (3) ++++
Регистрация: 15.11.2012
Адрес: Turkey
Цитата:
Сообщение от ice Посмотреть сообщение
а в чем проблема?
Cross Join по факту умножает кол-во записей между собой.
+ Where отрабатывает только в после объединения Cross.

В случае Inner Join
ON сначала ограничивает выборку, затем объединяет только по нужным.

В желаемом варианте исключена избыточная перекрестная выборка,
а также исключена излишняя выборка из-за переноса условий в блок ON.

Цитата:
Сообщение от mazzy Посмотреть сообщение
в Аксапте нигде хинта forceNestedLoop не стоит?
Нет, точно не используется


У меня подозрение в сторону каких-то параметров таблиц. Возможно в Relation свойства надо другие ставить, может ли это влиять или точно нет?
Старый 08.12.2016, 14:24   #3  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2494 (89) +++++++++
Регистрация: 20.08.2005
Цитата:
Сообщение от Pokersky09 Посмотреть сообщение
Cross Join по факту умножает кол-во записей между собой.
+ Where отрабатывает только в после объединения Cross.

В случае Inner Join
ON сначала ограничивает выборку, затем объединяет только по нужным.
Это неправильное мнение)

Все зависит от того, как распределены данные (статистика), какие именно созданы индексы и еще кучи других условий

Вот вам два разных запроса, с абсолютно одинаковыми планами

X++:
select top 100 *
from INVENTJOURNALTABLE ij
inner join INVENTJOURNALTRANS ijt
on ij.DATAAREAID = ijt.DATAAREAID and ij.JOURNALID = ijt.JOURNALID
where ij.JOURNALTYPE = 0


X++:
select top 100 *
from INVENTJOURNALTABLE ij
cross join INVENTJOURNALTRANS ijt
where ij.DATAAREAID = ijt.DATAAREAID and ij.JOURNALID = ijt.JOURNALID 
and  ij.JOURNALTYPE = 0


По поводу хинта forceNestedLoop.
Он, в принципе, наоборот заставит использовать inner join, но с обязательным хинтом inner loop join. Т.е. будет принудительно устанавливаться алгоритм объединения
Миниатюры
Нажмите на изображение для увеличения
Название: InnerJoin.png
Просмотров: 1159
Размер:	18.9 Кб
ID:	11082   Нажмите на изображение для увеличения
Название: CrossJoin.png
Просмотров: 1008
Размер:	18.2 Кб
ID:	11083  

__________________
Axapta v.3.0 sp5 kr2
За это сообщение автора поблагодарили: mazzy (2).
Старый 08.12.2016, 15:33   #4  
trud is offline
trud
Участник
Лучший по профессии 2017
 
1,039 / 1635 (57) ++++++++
Регистрация: 07.06.2003
Записей в блоге: 1
Цитата:
Сообщение от Pokersky09 Посмотреть сообщение
Cross Join по факту умножает кол-во записей между собой.
+ Where отрабатывает только в после объединения Cross.

В случае Inner Join
ON сначала ограничивает выборку, затем объединяет только по нужным.
За чтож вы так не любите команду которая занимается разработкой движка оптимизатора SQL Server
Теги
cross join, inner join, sql 2014

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
axsa: MDM Adapter - Extending Dynamics AX 2012 R3 Master Data Management Blog bot DAX Blogs 0 22.05.2014 03:28
atinkerersnotebook: Walkthrough & Tutorial Summary Blog bot DAX Blogs 1 09.09.2013 09:11
emeadaxsupport: AX 2012 reports fail to deploy on a server hosting multiple SQL Server Reporting Server instances Blog bot DAX Blogs 0 15.06.2012 11:11
gatesasbait: Dynamics AX 2009 SSRS and SSAS Integration Tips Blog bot DAX Blogs 3 09.07.2009 13:07
Dynamics AX: SQL Server, Heart of Dynamics AX Blog bot DAX Blogs 0 13.07.2007 18:00

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

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

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