Показать сообщение отдельно
Старый 05.03.2015, 11:57   #7  
fed is offline
fed
Moderator
Аватар для fed
Ex AND Project
Соотечественники
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
2,913 / 5736 (197) ++++++++++
Регистрация: 13.03.2002
Адрес: Hüfingen,DE
Цитата:
Сообщение от Владимир Максимов Посмотреть сообщение
Если хотели пошутить, то неудачно. В Axapta, по возможности, Exists join следует избегать. Если это возможно по логике запроса, то лучше использовать inner join. В данном случае - это возможно, поэтому именно так и следует делать.

Причина в том, что план выполнения запроса с Exists может меняться в зависимости от размера таблиц (количества записей). Это значит, что "сегодня" такой запрос работает быстро, а "завтра" начинаются дикие тормоза. И Вам потребуется много времени и сил, чтобы понять, в чем проблема... Для Inner join такой проблемы нет.
Рекомендация изначально не очень верна. Да - были проблемы с exists join в ранних версиях оракла, с которыми Axapta 2.1-2.5 работала. У MS SQL (Даже версии 2000) подобных проблем не наблюдалось. Кроме того - со времен Oracle 8.0.6 и MS SQL 2000 прошло уже 16 лет и ни то ни другой особых проблем именно с Exists join не имеют. То есть - проблемы с execution plan везде возникают время от времени, но именно с exists /not exists join они не связаны.