Показать сообщение отдельно
Старый 25.04.2006, 10:53   #9  
Владимир Максимов_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