helpf.pro
Регистрация

v8: ПОДСКАЖИТЕ С ЗАПРОСОМ!!!!!!СКОРЕЕ!!!

Bunzuk1991
12.12.2012 02:32Прочитано: 793
Зарос выполняется около 1-1.8 сек. Регистры большые (примерно: Остатки - 500тис., Обороты - 300 тис.), Вопрос - МОЖНО ЛИ УСКОРИТЬ ЗАПРОС(максимально). Упраяляемое приложение, толстый клиент, запрос на сервере

Код 1C v 8.2 УП
 ВЫБРАТЬ
ВложенныйЗапрос.СумаНачальныйОстаток,
ЕСТЬNULL(ВложенныйЗапрос.НарахованоОборот, ВложенныйЗапрос.Нараховано) КАК НарахованоОборот,
ВложенныйЗапрос.СумаПільгиКвартплатаОборот,
ВложенныйЗапрос.СубсидіяОборот,
ВложенныйЗапрос.СумаКонечныйОстаток,
ВложенныйЗапрос.Дата КАК Дата,
ВложенныйЗапрос.ОплаченоОборот,
ВложенныйЗапрос.ПерерахованоОборот,
ВложенныйЗапрос.ПоверненоОборот,
ВложенныйЗапрос.ЗнятоОборот
ИЗ
(ВЫБРАТЬ
Таблиця.СумаНачальныйОстаток КАК СумаНачальныйОстаток,
ВЫБОР
КОГДА Таблиця.НарахованоОборот <> 0
ИЛИ ВложенныйЗапрос.НарахованоОборот <> 0
ТОГДА ВЫРАЗИТЬ(ЕСТЬNULL(Таблиця.НарахованоОборот, 0) + ЕСТЬNULL(ВложенныйЗапрос.НарахованоОборот, 0) КАК ЧИСЛО(15, 2))
КОНЕЦ КАК НарахованоОборот,
Таблиця.СумаПільгиКвартплатаОборот КАК СумаПільгиКвартплатаОборот,
Таблиця.СубсидіяОборот КАК СубсидіяОборот,
Таблиця.СумаКонечныйОстаток КАК СумаКонечныйОстаток,
Таблиця.Дата КАК Дата,
Таблиця.ОплаченоОборот КАК ОплаченоОборот,
Таблиця.ПерерахованоОборот КАК ПерерахованоОборот,
Таблиця.ПоверненоОборот КАК ПоверненоОборот,
Таблиця.ЗнятоОборот КАК ЗнятоОборот,
Таблиця.НарахованоОборот КАК Нараховано
ИЗ
(ВЫБРАТЬ
ЕСТЬNULL(Залишки.Квартира, Нарахування.Квартира) КАК Квартира,
ЕСТЬNULL(Залишки.СумаНачальныйОстаток, 0) КАК СумаНачальныйОстаток,
ЕСТЬNULL(Нарахування.НарахованоОборот, 0) КАК НарахованоОборот,
ЕСТЬNULL(Нарахування.СумаПільгиКвартплатаОборот, 0) КАК СумаПільгиКвартплатаОборот,
ЕСТЬNULL(Нарахування.СубсидіяОборот, 0) КАК СубсидіяОборот,
ЕСТЬNULL(Залишки.СумаКонечныйОстаток, 0) КАК СумаКонечныйОстаток,
ЕСТЬNULL(Залишки.Период, Нарахування.Период) КАК Дата,
ЕСТЬNULL(Нарахування.ОплаченоОборот, 0) КАК ОплаченоОборот,
ЕСТЬNULL(Нарахування.ПерерахованоОборот, 0) КАК ПерерахованоОборот,
ЕСТЬNULL(Нарахування.ПоверненоОборот, 0) КАК ПоверненоОборот,
ЕСТЬNULL(Нарахування.ЗнятоОборот, 0) КАК ЗнятоОборот
ИЗ
(ВЫБРАТЬ
НарахуванняКвартплатиОбороты.Квартира КАК Квартира,
НарахуванняКвартплатиОбороты.НарахованоОборот КАК НарахованоОборот,
НарахуванняКвартплатиОбороты.СумаПільгиКвартплатаОборот КАК СумаПільгиКвартплатаОборот,
НарахуванняКвартплатиОбороты.ОплаченоОборот КАК ОплаченоОборот,
НарахуванняКвартплатиОбороты.СубсидіяОборот КАК СубсидіяОборот,
НарахуванняКвартплатиОбороты.Период КАК Период,
НарахуванняКвартплатиОбороты.ПерерахованоОборот КАК ПерерахованоОборот,
НарахуванняКвартплатиОбороты.ПоверненоОборот КАК ПоверненоОборот,
НарахуванняКвартплатиОбороты.ЗнятоОборот КАК ЗнятоОборот
ИЗ
РегистрНакопления.НарахуванняКвартплати.Обороты(&ДатаП, &ДатаК, МЕСЯЦ, Квартира = &Кварт) КАК НарахуванняКвартплатиОбороты) КАК Нарахування
ПОЛНОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
РозрахункиЗНаселеннямОстаткиИОбороты.Квартира КАК Квартира,
РозрахункиЗНаселеннямОстаткиИОбороты.СумаНачальныйОстаток КАК СумаНачальныйОстаток,
РозрахункиЗНаселеннямОстаткиИОбороты.СумаКонечныйОстаток КАК СумаКонечныйОстаток,
РозрахункиЗНаселеннямОстаткиИОбороты.Период КАК Период
ИЗ
РегистрНакопления.РозрахункиЗНаселенням.ОстаткиИОбороты(&ДатаП, &ДатаК, МЕСЯЦ, , Квартира = &Кварт) КАК РозрахункиЗНаселеннямОстаткиИОбороты) КАК Залишки
ПО Нарахування.Период = Залишки.Период
И Нарахування.Квартира = Залишки.Квартира

СГРУППИРОВАТЬ ПО
Нарахування.Период,
Залишки.Период,
ЕСТЬNULL(Залишки.Квартира, Нарахування.Квартира),
ЕСТЬNULL(Залишки.СумаНачальныйОстаток, 0),
ЕСТЬNULL(Нарахування.НарахованоОборот, 0),
ЕСТЬNULL(Нарахування.СумаПільгиКвартплатаОборот, 0),
ЕСТЬNULL(Нарахування.СубсидіяОборот, 0),
ЕСТЬNULL(Залишки.СумаКонечныйОстаток, 0),
ЕСТЬNULL(Нарахування.ОплаченоОборот, 0),
ЕСТЬNULL(Нарахування.ПерерахованоОборот, 0),
ЕСТЬNULL(Нарахування.ПоверненоОборот, 0),
ЕСТЬNULL(Нарахування.ЗнятоОборот, 0)) КАК Таблиця
ПОЛНОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
НарахуванняПоЛічильникахОбороты.Период КАК Период,
НарахуванняПоЛічильникахОбороты.Квартира КАК Квартира,
СУММА(ЕСТЬNULL(НарахуванняПоЛічильникахОбороты.НарахованоОборот, 0)) КАК НарахованоОборот
ИЗ
РегистрНакопления.НарахуванняПоЛічильниках.Обороты(&ДатаП, &ДатаК, МЕСЯЦ, Квартира = &Кварт) КАК НарахуванняПоЛічильникахОбороты

СГРУППИРОВАТЬ ПО
НарахуванняПоЛічильникахОбороты.Период,
НарахуванняПоЛічильникахОбороты.Квартира) КАК ВложенныйЗапрос
ПО Таблиця.Квартира = ВложенныйЗапрос.Квартира
И Таблиця.Дата = ВложенныйЗапрос.Период) КАК ВложенныйЗапрос

УПОРЯДОЧИТЬ ПО
Дата
АВТОУПОРЯДОЧИВАНИЕ
Yandex
Возможно, вас также заинтересует
Реклама на портале
Bunzuk1991
12.12.2012 04:41Ответ № 1
Вопрос закрыт!
E_Migachev
12.12.2012 11:27Ответ № 2
(1) Bunzuk1991, ускорил?
gorakh
12.12.2012 12:40Ответ № 3
Переделать из серии вложенных запросов в серию пакетных запросов.
Подсказка: Для быстрого поиска ответов - используйте 'Поиск'
Вы не можете отправить комментарий анонимно, пожалуйста войдите или зарегистрируйтесь.