Платформа 2003 руский + 2 сервис пак.
2000 SQL сервер + 4 сервис пак. Разница во времени выполнения запроса в 50 Раз.
Пример запроса:
В 1С:
Запрос.Текст = "ВЫБРАТЬ
| ERP_ПланированиеОтгрузки.Заказ КАК Заказ,
| ERP_ПланированиеОтгрузки.Заказ.Контрагент как Контрагент,
| ERP_ПланированиеОтгрузки.Заказ.ДоговорКонтрагента.ВалютаВзаиморасчетов как Валюта,
| ERP_ПланированиеОтгрузки.ДатаОтправки КАК ДеньОтгрузки,
| ERP_ПланированиеОтгрузки.СуммаЗаказа КАК Сумма,
| ВСборкеЗаказовОстатки.СуммаОстаток КАК СуммаСборки,
| ГотовностьКОтгрузкеЗаказовОстатки.СуммаОстаток КАК СуммаСобрано,
| -ОтгрузкаЗаказовОстатки.СуммаОстаток КАК СуммаОтгружено
| ,СборкаЗаказов.КоличествоКонечныйОстаток КАК СборкаКоличествоОстаток
|
|ИЗ РегистрСведений.ERP_ПланированиеОтгрузки КАК ERP_ПланированиеОтгрузки
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ERP_СборкаЗаказов.ОстаткиИОбороты КАК СборкаЗаказов
| ПО ERP_ПланированиеОтгрузки.Заказ = СборкаЗаказов.ЗаказПокупателя
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ERP_СборкаЗаказов.Остатки КАК ВСборкеЗаказовОстатки
| ПО ERP_ПланированиеОтгрузки.Заказ = ВСборкеЗаказовОстатки.ЗаказПокупателя
| И ВСборкеЗаказовОстатки.Статус = &Сборка
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ERP_СборкаЗаказов.Остатки КАК ГотовностьКОтгрузкеЗаказовОстатки
| ПО ERP_ПланированиеОтгрузки.Заказ = ГотовностьКОтгрузкеЗаказовОстатки.ЗаказПокупателя
| И ГотовностьКОтгрузкеЗаказовОстатки.СтатусСборки = &СтатусСобран
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ERP_СборкаЗаказов.Остатки КАК ОтгрузкаЗаказовОстатки
| ПО ERP_ПланированиеОтгрузки.Заказ = ОтгрузкаЗаказовОстатки.ЗаказПокупателя
| И ОтгрузкаЗаказовОстатки.Статус = &Отгрузка
|ГДЕ
| ERP_ПланированиеОтгрузки.ДатаОтправки = &ДатаОтправки
|"+?(ПоказыватьЗакрытыеОперации,"","И (СборкаЗаказов.КоличествоПриход ЕСТЬ NULL ИЛИ СборкаЗаказов.КоличествоКонечныйОстаток > 0)")+"
|
|УПОРЯДОЧИТЬ ПО
| ДеньОтгрузки,
| ERP_ПланированиеОтгрузки.Заказ.Дата,
| ERP_ПланированиеОтгрузки.Заказ";
______________________________________________________________________________________________________________________
Запрос в SQL от 8.0:
exec sp_executesql N'SELECT
_InfoReg5942_Q_000_T_001._Fld5943RRef _sf_3RRef,
_Document45._Fld588RRef f_1,
_Reference9._Fld179RRef f_2,
_InfoReg5942_Q_000_T_001._Fld5944 _sf_1,
_InfoReg5942_Q_000_T_001._Fld5945 f_3,
#V8TmpTable4_Q_000_T_003._Fld5960Balance f_4,
#V8TmpTable6_Q_000_T_004._Fld5960Balance f_5,
- #V8TmpTable8_Q_000_T_005._Fld5960Balance f_6,
#V8TmpTable2_Q_000_T_002._Fld5959FinalBalance f_7,
_Document45._Date_Time _sf_2
FROM
_InfoReg5942 _InfoReg5942_Q_000_T_001 WITH(NOLOCK)
LEFT OUTER JOIN _Document45 WITH(NOLOCK)
ON _InfoReg5942_Q_000_T_001._Fld5943RRef = _Document45._IDRRef
LEFT OUTER JOIN (
SELECT
#V8TmpTable1_T3._Fld5950RRef _Fld5950RRef,
SUM(#V8TmpTable1_T3._Fld5959Receipt) _Fld5959Receipt,
SUM(#V8TmpTable1_T3._Fld5959Balance + #V8TmpTable1_T3._Fld5959Turnover) _Fld5959FinalBalance,
SUM(#V8TmpTable1_T3._Fld5959Expense) _Fld5959Expense
FROM
(
SELECT
_AccumReg5949._Fld5950RRef _Fld5950RRef,
CAST(0 AS NUMERIC(1,0)) _Fld5959Balance,
CASE
WHEN _AccumReg5949._RecordKind = CAST(0 AS NUMERIC(1,0))
THEN _AccumReg5949._Fld5959
WHEN _AccumReg5949._RecordKind = CAST(1 AS NUMERIC(1,0))
THEN - _AccumReg5949._Fld5959
ELSE CAST(CAST(0 AS NUMERIC(1,0)) AS NUMERIC(15,3))
END _Fld5959Turnover,
CASE
WHEN _AccumReg5949._RecordKind = CAST(0 AS NUMERIC(1,0))
THEN _AccumReg5949._Fld5959
ELSE CAST(CAST(0 AS NUMERIC(1,0)) AS NUMERIC(15,3))
END _Fld5959Receipt,
CASE
WHEN _AccumReg5949._RecordKind = CAST(1 AS NUMERIC(1,0))
THEN _AccumReg5949._Fld5959
ELSE CAST(CAST(0 AS NUMERIC(1,0)) AS NUMERIC(15,3))
END _Fld5959Expense
FROM
_AccumReg5949 WITH(NOLOCK)
WHERE
_AccumReg5949._Active = @P1
) #V8TmpTable1_T3
GROUP BY
#V8TmpTable1_T3._Fld5950RRef
HAVING
SUM(#V8TmpTable1_T3._Fld5959Receipt) <> CAST(@P2 AS NUMERIC(1,0)) OR
SUM(#V8TmpTable1_T3._Fld5959Balance + #V8TmpTable1_T3._Fld5959Turnover) <> CAST(@P2 AS NUMERIC(1,0)) OR
SUM(#V8TmpTable1_T3._Fld5959Expense) <> CAST(@P2 AS NUMERIC(1,0))
) #V8TmpTable2_Q_000_T_002
ON _InfoReg5942_Q_000_T_001._Fld5943RRef = #V8TmpTable2_Q_000_T_002._Fld5950RRef
LEFT OUTER JOIN (
SELECT
#V8TmpTable3_B._Fld5950RRef _Fld5950RRef,
#V8TmpTable3_B._Fld5953RRef _Fld5953RRef,
SUM(#V8TmpTable3_B._Fld5960Balance) _Fld5960Balance
FROM
(
SELECT
_AccumRegTotals5969._Fld5950RRef _Fld5950RRef,
_AccumRegTotals5969._Fld5953RRef _Fld5953RRef,
_AccumRegTotals5969._Fld5960 _Fld5960Balance
FROM
_AccumRegTotals5969 WITH(NOLOCK)
WHERE
_AccumRegTotals5969._Period = @P3
) #V8TmpTable3_B
GROUP BY
#V8TmpTable3_B._Fld5950RRef,
#V8TmpTable3_B._Fld5953RRef
HAVING
SUM(#V8TmpTable3_B._Fld5960Balance) <> CAST(@P2 AS NUMERIC(1,0))
) #V8TmpTable4_Q_000_T_003
ON _InfoReg5942_Q_000_T_001._Fld5943RRef = #V8TmpTable4_Q_000_T_003._Fld5950RRef AND #V8TmpTable4_Q_000_T_003._Fld5953RRef = 0xba76e993c8e67c254f2afebf05dc4076
LEFT OUTER JOIN (
SELECT
#V8TmpTable5_B._Fld5950RRef _Fld5950RRef,
#V8TmpTable5_B._Fld5954RRef _Fld5954RRef,
SUM(#V8TmpTable5_B._Fld5960Balance) _Fld5960Balance
FROM
(
SELECT
_AccumRegTotals5969._Fld5950RRef _Fld5950RRef,
_AccumRegTotals5969._Fld5954RRef _Fld5954RRef,
_AccumRegTotals5969._Fld5960 _Fld5960Balance
FROM
_AccumRegTotals5969 WITH(NOLOCK)
WHERE
_AccumRegTotals5969._Period = @P3
) #V8TmpTable5_B
GROUP BY
#V8TmpTable5_B._Fld5950RRef,
#V8TmpTable5_B._Fld5954RRef
HAVING
SUM(#V8TmpTable5_B._Fld5960Balance) <> CAST(@P2 AS NUMERIC(1,0))
) #V8TmpTable6_Q_000_T_004
ON _InfoReg5942_Q_000_T_001._Fld5943RRef = #V8TmpTable6_Q_000_T_004._Fld5950RRef AND #V8TmpTable6_Q_000_T_004._Fld5954RRef = 0x9ee7022fc43fe40542eb69a468a9442a
LEFT OUTER JOIN (
SELECT
#V8TmpTable7_B._Fld5950RRef _Fld5950RRef,
#V8TmpTable7_B._Fld5953RRef _Fld5953RRef,
SUM(#V8TmpTable7_B._Fld5960Balance) _Fld5960Balance
FROM
(
SELECT
_AccumRegTotals5969._Fld5950RRef _Fld5950RRef,
_AccumRegTotals5969._Fld5953RRef _Fld5953RRef,
_AccumRegTotals5969._Fld5960 _Fld5960Balance
FROM
_AccumRegTotals5969 WITH(NOLOCK)
WHERE
_AccumRegTotals5969._Period = @P3
) #V8TmpTable7_B
GROUP BY
#V8TmpTable7_B._Fld5950RRef,
#V8TmpTable7_B._Fld5953RRef
HAVING
SUM(#V8TmpTable7_B._Fld5960Balance) <> CAST(@P2 AS NUMERIC(1,0))
) #V8TmpTable8_Q_000_T_005
ON _InfoReg5942_Q_000_T_001._Fld5943RRef = #V8TmpTable8_Q_000_T_005._Fld5950RRef AND #V8TmpTable8_Q_000_T_005._Fld5953RRef = 0xa2bed958f147b39448e5efac886e3ba6
LEFT OUTER JOIN _Reference9 WITH(NOLOCK)
ON _Document45._Fld599RRef = _Reference9._IDRRef
WHERE
_InfoReg5942_Q_000_T_001._Fld5944 = @P4 AND (#V8TmpTable2_Q_000_T_002._Fld5959Receipt IS NULL OR
#V8TmpTable2_Q_000_T_002._Fld5959FinalBalance > CAST(@P2 AS NUMERIC(1,0)))
ORDER BY
_InfoReg5942_Q_000_T_001._Fld5944,
_Document45._Date_Time,
_InfoReg5942_Q_000_T_001._Fld5943RRef
SELECT @@TRANCOUNT', N'@P1 varbinary(1),@P2 numeric(1,0),@P3 datetime,@P4 datetime', 0x01, 0, {ts '3999-11-01 00:00:00'}, {ts '2007-06-25 00:00:00'}
______________________________________________________________________________________________________________________
Запрос в SQL от 8.1:
exec sp_executesql N'SELECT
_InfoReg5942_Q_000_T_001._Fld5943RRef AS _sf_3RRef,
_Document45._Fld588RRef AS f_1,
_Reference9._Fld179RRef AS f_2,
_InfoReg5942_Q_000_T_001._Fld5944 AS _sf_1,
_InfoReg5942_Q_000_T_001._Fld5945 AS f_3,
#V8TblAli2_Q_000_T_003._Fld5960Balance AS f_4,
#V8TblAli3_Q_000_T_004._Fld5960Balance AS f_5,
- #V8TblAli4_Q_000_T_005._Fld5960Balance AS f_6,
#V8TblAli1_Q_000_T_002._Fld5959FinalBalance AS f_7,
_Document45._Date_Time AS _sf_2
FROM
_InfoReg5942 _InfoReg5942_Q_000_T_001 WITH(NOLOCK)
LEFT OUTER JOIN _Document45 WITH(NOLOCK)
ON _InfoReg5942_Q_000_T_001._Fld5943RRef = _Document45._IDRRef
LEFT OUTER JOIN (
SELECT
#V8TblAli1_T._Fld5950RRef AS _Fld5950RRef,
CAST(SUM(#V8TblAli1_T._Fld5959Receipt) AS NUMERIC(28,3)) AS _Fld5959Receipt,
CAST(SUM(#V8TblAli1_T._Fld5959Balance + #V8TblAli1_T._Fld5959Receipt - #V8TblAli1_T._Fld5959Expense) AS NUMERIC(30,3)) AS _Fld5959FinalBalance
FROM
(
SELECT
_AccumReg5949._Fld5950RRef AS _Fld5950RRef,
CAST(SUM(CAST(0 AS NUMERIC(1,0))) AS NUMERIC(7,0)) AS _Fld5959Balance,
CAST(SUM(CASE
WHEN _AccumReg5949._RecordKind = CAST(0 AS NUMERIC(1,0))
THEN _AccumReg5949._Fld5959
ELSE CAST(CAST(0 AS NUMERIC(1,0)) AS NUMERIC(15,3))
END) AS NUMERIC(21,3)) AS _Fld5959Receipt,
CAST(SUM(CASE
WHEN _AccumReg5949._RecordKind = CAST(0 AS NUMERIC(1,0))
THEN CAST(CAST(0 AS NUMERIC(1,0)) AS NUMERIC(15,3))
ELSE _AccumReg5949._Fld5959
END) AS NUMERIC(21,3)) AS _Fld5959Expense
FROM
_AccumReg5949 WITH(NOLOCK)
WHERE
_AccumReg5949._Active = @P1
GROUP BY
_AccumReg5949._Fld5950RRef
HAVING
CAST(SUM(CAST(@P2 AS NUMERIC(1,0))) AS NUMERIC(7,0)) <> CAST(@P2 AS NUMERIC(1,0)) OR
CAST(SUM(CASE
WHEN _AccumReg5949._RecordKind = CAST(0 AS NUMERIC(1,0))
THEN _AccumReg5949._Fld5959
ELSE CAST(CAST(0 AS NUMERIC(1,0)) AS NUMERIC(15,3))
END) AS NUMERIC(21,3)) <> CAST(@P2 AS NUMERIC(1,0)) OR
CAST(SUM(CASE
WHEN _AccumReg5949._RecordKind = CAST(0 AS NUMERIC(1,0))
THEN CAST(CAST(0 AS NUMERIC(1,0)) AS NUMERIC(15,3))
ELSE _AccumReg5949._Fld5959
END) AS NUMERIC(21,3)) <> CAST(@P2 AS NUMERIC(1,0))
) #V8TblAli1_T
GROUP BY
#V8TblAli1_T._Fld5950RRef
HAVING
CAST(SUM(#V8TblAli1_T._Fld5959Receipt) AS NUMERIC(28,3)) <> CAST(@P2 AS NUMERIC(1,0)) OR
CAST(SUM(#V8TblAli1_T._Fld5959Balance + #V8TblAli1_T._Fld5959Receipt - #V8TblAli1_T._Fld5959Expense) AS NUMERIC(30,3)) <> CAST(@P2 AS NUMERIC(1,0))
) #V8TblAli1_Q_000_T_002
ON _InfoReg5942_Q_000_T_001._Fld5943RRef = #V8TblAli1_Q_000_T_002._Fld5950RRef
LEFT OUTER JOIN (
SELECT
_AccumRegTotals5969._Fld5950RRef AS _Fld5950RRef,
_AccumRegTotals5969._Fld5953RRef AS _Fld5953RRef,
CAST(SUM(_AccumRegTotals5969._Fld5960) AS NUMERIC(27,2)) AS _Fld5960Balance
FROM
_AccumRegTotals5969 WITH(NOLOCK)
WHERE
_AccumRegTotals5969._Period = @P3
GROUP BY
_AccumRegTotals5969._Fld5950RRef,
_AccumRegTotals5969._Fld5953RRef
HAVING
CAST(SUM(_AccumRegTotals5969._Fld5960) AS NUMERIC(27,2)) <> CAST(@P2 AS NUMERIC(1,0))
) #V8TblAli2_Q_000_T_003
ON _InfoReg5942_Q_000_T_001._Fld5943RRef = #V8TblAli2_Q_000_T_003._Fld5950RRef AND #V8TblAli2_Q_000_T_003._Fld5953RRef = 0xba76e993c8e67c254f2afebf05dc4076
LEFT OUTER JOIN (
SELECT
_AccumRegTotals5969._Fld5950RRef AS _Fld5950RRef,
_AccumRegTotals5969._Fld5954RRef AS _Fld5954RRef,
CAST(SUM(_AccumRegTotals5969._Fld5960) AS NUMERIC(27,2)) AS _Fld5960Balance
FROM
_AccumRegTotals5969 WITH(NOLOCK)
WHERE
_AccumRegTotals5969._Period = @P3
GROUP BY
_AccumRegTotals5969._Fld5950RRef,
_AccumRegTotals5969._Fld5954RRef
HAVING
CAST(SUM(_AccumRegTotals5969._Fld5960) AS NUMERIC(27,2)) <> CAST(@P2 AS NUMERIC(1,0))
) #V8TblAli3_Q_000_T_004
ON _InfoReg5942_Q_000_T_001._Fld5943RRef = #V8TblAli3_Q_000_T_004._Fld5950RRef AND #V8TblAli3_Q_000_T_004._Fld5954RRef = 0x9ee7022fc43fe40542eb69a468a9442a
LEFT OUTER JOIN (
SELECT
_AccumRegTotals5969._Fld5950RRef AS _Fld5950RRef,
_AccumRegTotals5969._Fld5953RRef AS _Fld5953RRef,
CAST(SUM(_AccumRegTotals5969._Fld5960) AS NUMERIC(27,2)) AS _Fld5960Balance
FROM
_AccumRegTotals5969 WITH(NOLOCK)
WHERE
_AccumRegTotals5969._Period = @P3
GROUP BY
_AccumRegTotals5969._Fld5950RRef,
_AccumRegTotals5969._Fld5953RRef
HAVING
CAST(SUM(_AccumRegTotals5969._Fld5960) AS NUMERIC(27,2)) <> CAST(@P2 AS NUMERIC(1,0))
) #V8TblAli4_Q_000_T_005
ON _InfoReg5942_Q_000_T_001._Fld5943RRef = #V8TblAli4_Q_000_T_005._Fld5950RRef AND #V8TblAli4_Q_000_T_005._Fld5953RRef = 0xa2bed958f147b39448e5efac886e3ba6
LEFT OUTER JOIN _Reference9 WITH(NOLOCK)
ON _Document45._Fld599RRef = _Reference9._IDRRef
WHERE
_InfoReg5942_Q_000_T_001._Fld5944 = @P4 AND (#V8TblAli1_Q_000_T_002._Fld5959Receipt IS NULL OR
#V8TblAli1_Q_000_T_002._Fld5959FinalBalance > CAST(@P2 AS NUMERIC(1,0)))
ORDER BY
_InfoReg5942_Q_000_T_001._Fld5944,
_Document45._Date_Time,
_InfoReg5942_Q_000_T_001._Fld5943RRef', N'@P1 varbinary(1),@P2 numeric(1,0),@P3 datetime,@P4 datetime', 0x01, 0, {ts '3999-11-01 00:00:00'}, {ts '2007-06-25 00:00:00'}
______________________________________________________________________________________________________________________
Некоторые эксперименты: Запрос от 8.0 прекрасно и без тормозов выполняется на базе 8.0
Кто-нибудь сможет прокоментировать, помочь?
После конвертации 8.0 на 8.1.7.37 Стали жутко тормозить все
Модераторы: Trinity admin`s, Free-lance moderator`s
-
- Junior member
- Сообщения: 2
- Зарегистрирован: 27 июн 2007, 12:33
- Откуда: Петербург
-
- Junior member
- Сообщения: 2
- Зарегистрирован: 27 июн 2007, 12:33
- Откуда: Петербург
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 16 гостей