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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 24.04.2006, 20:06   #1  
Vadik is offline
Vadik
Модератор
Аватар для Vadik
Лучший по профессии 2017
Лучший по профессии 2015
 
3,631 / 1853 (69) ++++++++
Регистрация: 18.11.2002
Адрес: гражданин Москвы


Код:
select sum(Field1) from Table1 where Table1.Field1 > 0;
Variable1 = Table1.Field1;
вместо

Код:
While select * from Table1
where Table1.Field1 > 0
{
Variable1 += Table1.Field1;
}
Постоянно слышу разговоры о том, что запрос, разбитый на несколько мелких, работает (может работать) быстрее. Примеров, подтверждающих это, почему-то никто не приводит
__________________
-ТСЯ или -ТЬСЯ ?
Старый 25.04.2006, 00:08   #2  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от Vadik Посмотреть сообщение
вместо
Точно!
Если это допустимо. Подозреваю, что тело цикла было вставлено сугубо для примера.

Цитата:
Сообщение от Vadik Посмотреть сообщение
Постоянно слышу разговоры о том, что запрос, разбитый на несколько мелких, работает (может работать) быстрее. Примеров, подтверждающих это, почему-то никто не приводит
IMTS
Включена ли у вас в Аксапте система множественных складских транзакций?


Согласен, там длинная цепочка для получения вывода.
Надо начать с того, что длинная транзакция разбивается на множество мелких...
Твои ответы в опросе - перечитал еще раз.
__________________
полезное на axForum, github, vk, coub.
Старый 25.04.2006, 10:53   #3  
Владимир Максимов_imported is offline
Владимир Максимов_imported
Участник
 
33 / 10 (1) +
Регистрация: 20.01.2004
Цитата:
Сообщение от Vadik Посмотреть сообщение
Постоянно слышу разговоры о том, что запрос, разбитый на несколько мелких, работает (может работать) быстрее. Примеров, подтверждающих это, почему-то никто не приводит
Вот ЭТО будет работать относительно долго
Код:
while select LineNum, ItemId, Dimension
	from salesLine
	where salesLine.SalesId == ...
		join Description
		from dimensions
		where dimensions.Num == salesLine.Dimension[1]
			&& dimensions.DimensionCode == SysDimension::Department
{
...
}
А вот такое разделение ускорит выполнение кода примерно на 10%

Код:
while select LineNum, ItemId, Dimension
	from salesLine
	where salesLine.SalesId == ...
{
	select firstonly Description
	from dimensions
	where dimensions.Num == salesLine.Dimension[1]
		&& dimensions.DimensionCode == SysDimension::Department
...
}
Здесь сошлось несколько причин. Хотя, в общем случае, объединение по join работает быстрее чем вложенные циклы, но при подключении таблицы финансовых аналитик ВСЕГДА имеем тормоза по сравнению с прямым запросом внутри while select
 

Опции темы Поиск в этой теме
Поиск в этой теме:

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

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

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

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