Источник: https://infostart.ru/1c/articles/980323/
Предложенная автором форма запроса по его словам сокращает время выполнения запроса на 25 процентов.
На что обратить внимание:
- Надо ставить ограничение на дату по обеим таблицам, иначе потеряем данные
- Надо очень внимательно анализировать группируемые поля, так как при сложных запросах количество полей в группировке отличается от количество полей в выборке.
- не перепутать таблицы по именам :)
Тестирование показало, что данный вариант запроса не всегда отрабатывает корректно и не всегда есть выигрыш по скорости, поэтому применять надо аккуратно.
Классический запрос аналога:
ВЫБРАТЬ
ВложенныйЗапрос.Оборудование КАК Оборудование,
ВложенныйЗапрос.ПоследниеПоказанияПериод КАК ПоследниеПоказанияПериод,
ПКУ_ПоказанияСчетчиков.Значение КАК ПоследниеПоказанияЗначение
ИЗ
(ВЫБРАТЬ
ПКУ_ПоказанияСчетчиков.Оборудование КАК Оборудование,
МАКСИМУМ(ПКУ_ПоказанияСчетчиков.Период) КАК ПоследниеПоказанияПериод
ИЗ
РегистрСведений.ПоказанияСчетчиков КАК ПКУ_ПоказанияСчетчиков
ГДЕ
ПКУ_ПоказанияСчетчиков.Период <= &ДатаПоказаний
СГРУППИРОВАТЬ ПО
ПКУ_ПоказанияСчетчиков.Оборудование) КАК ВложенныйЗапрос
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ПоказанияСчетчиков КАК ПКУ_ПоказанияСчетчиков
ПО ВложенныйЗапрос.Оборудование = ПКУ_ПоказанияСчетчиков.Оборудование
И ВложенныйЗапрос.ПоследниеПоказанияПериод = ПКУ_ПоказанияСчетчиков.Период
Предложенный автором:
ВЫБРАТЬ
ПКУ_ПоказанияСчетчиков.Значение КАК ПоследниеПоказанияЗначение,
ПКУ_ПоказанияСчетчиков.Оборудование КАК Оборудование,
ПКУ_ПоказанияСчетчиков.Период КАК Период
ИЗ
РегистрСведений.ПоказанияСчетчиков КАК ПКУ_ПоказанияСчетчиков
ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ПоказанияСчетчиков КАК ПКУ_ПоказанияСчетчиков1
ПО ПКУ_ПоказанияСчетчиков.Оборудование = ПКУ_ПоказанияСчетчиков1.Оборудование
ГДЕ
ПКУ_ПоказанияСчетчиков1.Период <= &Период И
ПКУ_ПоказанияСчетчиков.Период <= &Период
СГРУППИРОВАТЬ ПО
ПКУ_ПоказанияСчетчиков.Оборудование,
ПКУ_ПоказанияСчетчиков.Значение,
ПКУ_ПоказанияСчетчиков.Период
ИМЕЮЩИЕ
МАКСИМУМ(ПКУ_ПоказанияСчетчиков1.Период) = ПКУ_ПоказанияСчетчиков.Период
|