Ребят доброго дня, помогите подскажите пожалуйста как можно оптимизировать запрос
ВЫБРАТЬ
ПоступлениеДопРасходов.Содержание КАК Содержание,
ПоступлениеДопРасходов.Номенклатура КАК Номенклатура,
СУММА(ПоступлениеДопРасходов.Сумма) КАК Сумма,
МАКСИМУМ(ЗаказПоставщикуОтгруженный.Количество) КАК Количество,
ПоступлениеДопРасходов.Валюта КАК Валюта,
ПоступлениеДопРасходов.Курс КАК Курс,
ПоступлениеДопРасходов.Контрагент КАК Контрагент,
ПоступлениеДопРасходов.ДоговорВзаиморасчетов КАК Договор
ИЗ
(ВЫБРАТЬ
"ГТД: Таможенная пошлина" КАК Содержание,
ГТДИмпортТовары.Номенклатура КАК Номенклатура,
ГТДИмпортТовары.Количество КАК Количество,
ГТДИмпортТовары.СуммаПошлины КАК Сумма,
ГТДИмпортТовары.Ссылка.ДоговорВзаиморасчетов.ВалютаВзаиморасчетов КАК Валюта,
ГТДИмпортТовары.Ссылка.КурсВзаиморасчетов КАК Курс,
ГТДИмпортТовары.Ссылка.Контрагент КАК Контрагент,
ГТДИмпортТовары.Ссылка.ДоговорВзаиморасчетов КАК ДоговорВзаиморасчетов
ИЗ
Документ.ГТДИмпорт.Товары КАК ГТДИмпортТовары
ГДЕ
ГТДИмпортТовары.Ссылка.ДокументОснование = &Основание
И ГТДИмпортТовары.Ссылка.Проведен
И ГТДИмпортТовары.Номенклатура В(&МассивНоменклатуры)
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
"ГТД: НДС",
ГТДИмпортТовары.Номенклатура,
ГТДИмпортТовары.Количество,
ГТДИмпортТовары.СуммаНДС,
ГТДИмпортТовары.Ссылка.ДоговорВзаиморасчетов.ВалютаВзаиморасчетов,
ГТДИмпортТовары.Ссылка.КурсВзаиморасчетов,
ГТДИмпортТовары.Ссылка.Контрагент,
ГТДИмпортТовары.Ссылка.ДоговорВзаиморасчетов
ИЗ
Документ.ГТДИмпорт.Товары КАК ГТДИмпортТовары
ГДЕ
ГТДИмпортТовары.Ссылка.ДокументОснование = &Основание
И ГТДИмпортТовары.Ссылка.Проведен
И ГТДИмпортТовары.Номенклатура В(&МассивНоменклатуры)
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
"ГТД: Таможенный сбор",
ГТДИмпортТовары.Номенклатура,
ГТДИмпортТовары.Количество,
ГТДИмпортТовары.СуммаТаможня,
ГТДИмпортТовары.Ссылка.ДоговорВзаиморасчетов.ВалютаВзаиморасчетов,
ГТДИмпортТовары.Ссылка.КурсВзаиморасчетов,
ГТДИмпортТовары.Ссылка.Контрагент,
ГТДИмпортТовары.Ссылка.ДоговорВзаиморасчетов
ИЗ
Документ.ГТДИмпорт.Товары КАК ГТДИмпортТовары
ГДЕ
ГТДИмпортТовары.Ссылка.ДокументОснование = &Основание
И ГТДИмпортТовары.Ссылка.Проведен
И ГТДИмпортТовары.Номенклатура В(&МассивНоменклатуры)
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
"ДР: " + ПоступлениеДопРасходовИмпортТовары.Ссылка.Содержание,
ПоступлениеДопРасходовИмпортТовары.Номенклатура,
ПоступлениеДопРасходовИмпортТовары.Количество,
ПоступлениеДопРасходовИмпортТовары.Сумма,
ПоступлениеДопРасходовИмпортТовары.Ссылка.ВалютаДокумента,
ПоступлениеДопРасходовИмпортТовары.Ссылка.КурсДокумента,
ПоступлениеДопРасходовИмпортТовары.Ссылка.Контрагент,
ПоступлениеДопРасходовИмпортТовары.Ссылка.ДоговорВзаиморасчетов
ИЗ
Документ.ПоступлениеДопРасходовИмпорт.Товары КАК ПоступлениеДопРасходовИмпортТовары
ГДЕ
ПоступлениеДопРасходовИмпортТовары.Ссылка.ДокументОснование = &Основание
И ПоступлениеДопРасходовИмпортТовары.Ссылка.Проведен
И ПоступлениеДопРасходовИмпортТовары.Номенклатура В(&МассивНоменклатуры)) КАК ПоступлениеДопРасходов
ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
ЗаказПоставщикуОтгруженныйТовары.Номенклатура КАК Номенклатура,
СУММА(ЗаказПоставщикуОтгруженныйТовары.Количество) КАК Количество
ИЗ
Документ.ЗаказПоставщикуОтгруженный.Товары КАК ЗаказПоставщикуОтгруженныйТовары
ГДЕ
ЗаказПоставщикуОтгруженныйТовары.Ссылка = &Основание
СГРУППИРОВАТЬ ПО
ЗаказПоставщикуОтгруженныйТовары.Номенклатура) КАК ЗаказПоставщикуОтгруженный
ПО ПоступлениеДопРасходов.Номенклатура = ЗаказПоставщикуОтгруженный.Номенклатура
СГРУППИРОВАТЬ ПО
ПоступлениеДопРасходов.Содержание,
ПоступлениеДопРасходов.Номенклатура,
ПоступлениеДопРасходов.Валюта,
ПоступлениеДопРасходов.Курс,
ПоступлениеДопРасходов.Контрагент,
ПоступлениеДопРасходов.ДоговорВзаиморасчетов
ПоказатьПо теме из базы знаний
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Ну во-первых, вместо подзапроса сделать ВТ.
А зачем тут левое соединение, если поля в выборке не участвуют?
А зачем тут левое соединение, если поля в выборке не участвуют?
ВЫБРАТЬ
"ДР: " + ПоступлениеДопРасходовИмпортТовары.Ссылка.Содержание,
ПоступлениеДопРасходовИмпортТовары.Номенклатура,
ПоступлениеДопРасходовИмпортТовары.Количество,
ПоступлениеДопРасходовИмпортТовары.Сумма,
ПоступлениеДопРасходовИмпортТовары.Ссылка.ВалютаДокумента,
ПоступлениеДопРасходовИмпортТовары.Ссылка.КурсДокумента,
ПоступлениеДопРасходовИмпортТовары.Ссылка.Контрагент,
ПоступлениеДопРасходовИмпортТовары.Ссылка.ДоговорВзаиморасчетов
ИЗ
Документ.ПоступлениеДопРасходовИмпорт.Товары КАК ПоступлениеДопРасходовИмпортТовары
ГДЕ
ПоступлениеДопРасходовИмпортТовары.Ссылка.ДокументОснование = &Основание
И ПоступлениеДопРасходовИмпортТовары.Ссылка.Проведен
И ПоступлениеДопРасходовИмпортТовары.Номенклатура В(&МассивНоменклатуры)) КАК ПоступлениеДопРасходов
ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
ЗаказПоставщикуОтгруженныйТовары.Номенклатура КАК Номенклатура,
СУММА(ЗаказПоставщикуОтгруженныйТовары.Количество) КАК Количество
ИЗ
Документ.ЗаказПоставщикуОтгруженный.Товары КАК ЗаказПоставщикуОтгруженныйТовары
ГДЕ
ЗаказПоставщикуОтгруженныйТовары.Ссылка = &Основание
СГРУППИРОВАТЬ ПО
ЗаказПоставщикуОтгруженныйТовары.Номенклатура) КАК ЗаказПоставщикуОтгруженный
ПО ПоступлениеДопРасходов.Номенклатура = ЗаказПоставщикуОтгруженный.Номенклатура
Показать
(6)
Примерно как то так? а потом соеденить с заказом поставщику
ВЫБРАТЬ
ГТДИмпортТовары.Номенклатура КАК Номенклатура,
ГТДИмпортТовары.Количество КАК Количество,
СУММА(ГТДИмпортТовары.СуммаПошлины) КАК СуммаПошлины,
СУММА(ГТДИмпортТовары.СуммаНДС) КАК СуммаНДС,
СУММА(ГТДИмпортТовары.СуммаТаможня) КАК СуммаТаможня,
ГТДИмпортТовары.Ссылка.ДоговорВзаиморасчетов.ВалютаВзаиморасчетов КАК Валюта,
ГТДИмпортТовары.Ссылка.КурсВзаиморасчетов КАК Курс,
ГТДИмпортТовары.Ссылка.Контрагент КАК Контрагент,
ГТДИмпортТовары.Ссылка.ДоговорВзаиморасчетов КАК Договор
ПОМЕСТИТЬ ВТ
ИЗ
Документ.ГТДИмпорт.Товары КАК ГТДИмпортТовары
ГДЕ
ГТДИмпортТовары.Ссылка.ДокументОснование = &Основание
И ГТДИмпортТовары.Ссылка.Проведен
И ГТДИмпортТовары.Номенклатура В(&МассивНоменклатуры)
СГРУППИРОВАТЬ ПО
ГТДИмпортТовары.Номенклатура,
ГТДИмпортТовары.Контрагент,
ГТДИмпортТовары.ДоговорВзаиморасчетов
ИНДЕКСИРОВАТЬ ПО
Номенклатура
;
//////////////////////////////////////////////////////////// ////////////////////
ВЫБРАТЬ
"ГТД: Таможенная пошлина" КАК Содержание
ВТ.Номенклатура КАК Номенклатура,
ВТ.Количество КАК Количество,
ВТ.СуммаТаможня КАК Сумма,
ВТ.Валюта КАК Валюта,
ВТ.Курс КАК Курс,
ВТ.Контрагент КАК Контрагент,
ВТ.Договор КАК Договор
ПОМЕСТИТЬ ВТ2
ИЗ
ВТ КАК ВТ
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
"ГТД: НДС",
ВТ.Номенклатура ,
ВТ.Количество,
ВТ.СуммаНДС,
ВТ.Валюта,
ВТ.Курс,
ВТ.Контрагент,
ВТ.Договор,
ИЗ
ВТ КАК ВТ
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
"ГТД: Таможенный сбор",
ВТ.Номенклатура ,
ВТ.Количество,
ВТ.СуммаПошлины,
ВТ.Валюта,
ВТ.Курс,
ВТ.Контрагент,
ВТ.Договор,
ИЗ
ВТ КАК ВТ
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
"ДР: " + ПоступлениеДопРасходовИмпортТовары.Ссылка.Содержание,
ПоступлениеДопРасходовИмпортТовары.Номенклатура,
ПоступлениеДопРасходовИмпортТовары.Количество,
ПоступлениеДопРасходовИмпортТовары.Сумма,
ПоступлениеДопРасходовИмпортТовары.Ссылка.ВалютаДокумента,
ПоступлениеДопРасходовИмпортТовары.Ссылка.КурсДокумента,
ПоступлениеДопРасходовИмпортТовары.Ссылка.Контрагент,
ПоступлениеДопРасходовИмпортТовары.Ссылка.ДоговорВзаиморасчетов
ИЗ
Документ.ГТДИмпорт.Товары КАК ГТДИмпортТовары
ИНДЕКСИРОВАТЬ ПО
Номенклатура
;
//////////////////////////////////////////////////////////// ////////////////////
ПоказатьПримерно как то так? а потом соеденить с заказом поставщику
(16)
Примерно так, да.
На самом деле не уверен, что индексация нужна.
Ниже - цитата с ИТС
Примерно как то так?
Примерно так, да.
На самом деле не уверен, что индексация нужна.
Ниже - цитата с ИТС
Также следует иметь в виду, что на маленьких таблицах (порядка нескольких тысяч записей и меньше) СУБД практически всегда использует сканирование таблицы либо сканирование кластерного (автоматически созданного системой) индекса, так как это наиболее простое решение в данном случае. Так что нет смысла дополнительно индексировать заведомо небольшие таблицы. С другой стороны, часто трудно заранее предугадать размер таблицы.
То есть понятно, что создание дополнительных индексов может положительно сказаться на выборке данных из больших таблиц и не дать никакого эффекта на маленьких объемах данных (а иногда и замедлить быстродействие системы в целом).
То есть понятно, что создание дополнительных индексов может положительно сказаться на выборке данных из больших таблиц и не дать никакого эффекта на маленьких объемах данных (а иногда и замедлить быстродействие системы в целом).
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот