Привожу тексты запросов, обычного:
ТекстЗапроса = "-- 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 для параметрического.
Как такое вообще возможно? Разве параметрический запрос не должен работать быстрее?