Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Обычная тема Параметрический запрос работает медленнее? (число прочтений - 893 )
al_zzz
Senior Member
****
Отсутствует


1C++ ->

Сообщений: 361
Местоположение: Барнаул
Зарегистрирован: 05. Сентября 2009
Пол: Мужской
Параметрический запрос работает медленнее?
26. Ноября 2010 :: 03:25
Печать  
Привожу тексты запросов, обычного:
Код
Выбрать все
ТекстЗапроса = "-- qryMaker:Отчет1.2009.11.12.11.40.20
		|Select Склады.Id As [Склад $Справочник.Склады]
		| , Остатки.Количество Количество
		| , Нормы.Норма*:МинОстаток Норма
		| , 0 РасчНорма
		|From   $Справочник.Склады As Склады
		|    Left Outer Join
		|    (SELECT ОстаткиТМЦОстатки.Склад
		|	, Sum(ОстаткиТМЦОстатки.КоличествоОстаток) Количество
		|FROM $РегистрОстатки.ОстаткиТМЦ(,,
		|		(Номенклатура = :ВыбНом),
		|		(Склад, Номенклатура),) AS ОстаткиТМЦОстатки
		|Where (ОстаткиТМЦОстатки.Склад in (Select val From #СписокСкладов))
		|   GROUP BY ОстаткиТМЦОстатки.Склад) As Остатки On Склады.Id = Остатки.Склад
		| Full Outer Join (
		|Select $СпрСлОбщ.Склад Склад
		|, $СпрСлОбщ.НормаПодтоварки Норма
		|From $Справочник.СлужебныйОбщий As СпрСлОбщ
		|Where (СпрСлОбщ.ParentExt = :ВыбНом)
		|  And ($СпрСлОбщ.Склад  in (Select val From #СписокСкладов))) As Нормы On (Нормы.Склад = Склады.Id)
		|Where	 (Склады.Id in (Select val From #СписокСкладов)
		|	   AND (Not((Остатки.Количество = 0) And (Left(Склады.Descr,2) Like '24')))
		|	   AND (Not((Остатки.Количество = 0) And (Left(Склады.Descr,2) Like '13'))))
		|	   AND (Not(Left(Склады.Descr,2) Like '08'))
		|Order by Склады.Descr
		|";
 


и параметрического:
Код
Выбрать все
ТекстЗапроса = "-- qryMaker:Отчет1.2009.11.12.11.40.20
		|Select Склады.Id As [Склад $Справочник.Склады]
		| , Остатки.Количество Количество
		| , Нормы.Норма*? Норма
		| , 0 РасчНорма
		|From   $Справочник.Склады As Склады
		|    Left Outer Join
		|    (SELECT ОстаткиТМЦОстатки.Склад
		|	, Sum(ОстаткиТМЦОстатки.КоличествоОстаток) Количество
		|FROM $РегистрОстатки.ОстаткиТМЦ(,,
		|		(Номенклатура = ?),
		|		(Склад, Номенклатура),) AS ОстаткиТМЦОстатки
		|Where (ОстаткиТМЦОстатки.Склад in (Select val From Skladi))
		|   GROUP BY ОстаткиТМЦОстатки.Склад) As Остатки On Склады.Id = Остатки.Склад
		| Full Outer Join (
		|Select $СпрСлОбщ.Склад Склад
		|, $СпрСлОбщ.НормаПодтоварки Норма
		|From $Справочник.СлужебныйОбщий As СпрСлОбщ
		|Where (СпрСлОбщ.ParentExt = ?)
		|  And ($СпрСлОбщ.Склад  in (Select val From Skladi))) As Нормы On (Нормы.Склад = Склады.Id)
		|Where	 (Склады.Id in (Select val From Skladi)
		|	   AND (Not((Остатки.Количество = 0) And (Left(Склады.Descr,2) Like '24')))
		|	   AND (Not((Остатки.Количество = 0) And (Left(Склады.Descr,2) Like '13'))))
		|	   AND (Not(Left(Склады.Descr,2) Like '08'))
		|Order by Склады.Descr
		|";
 


Сравнил по времени выполнения в одинаковых условиях. Получил 0.000134 для обычного и 1.084619 для параметрического.
Как такое вообще возможно? Разве параметрический запрос не должен работать быстрее?
  

Каждая система проходит три стадии:&&1) Шумиха&&2) Неразбериха&&3) Поиск виновных (собственно, рабочий процесс)&&4) Наказание невиновных&&5) Награждение непричастных&& В.М. Глушков
Наверх
 
IP записан
 
al_zzz
Senior Member
****
Отсутствует


1C++ ->

Сообщений: 361
Местоположение: Барнаул
Зарегистрирован: 05. Сентября 2009
Пол: Мужской
Re: Параметрический запрос работает медленнее?
Ответ #1 - 26. Ноября 2010 :: 04:20
Печать  
Извините, описался. Для обычного 0.999134...
  

Каждая система проходит три стадии:&&1) Шумиха&&2) Неразбериха&&3) Поиск виновных (собственно, рабочий процесс)&&4) Наказание невиновных&&5) Награждение непричастных&& В.М. Глушков
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать