Оптимизировать запрос

1. user1302515 19.03.20 16:45 Сейчас в теме
Приветствую всех!
Помогите пожалуйста оптимизировать запрос, делал не я, а сам в этом пол года буду плюхаться.
Самый затык в строчках
Хозрасчетный.СубконтоКт1
, где выбирается номенклатура и единицы измерения, при том что выводятся иногда 1-2 позиции.
Запрос выполняется очень долго, но если закомментировать эти 2 строчки то будут тысячные секунды.
Как еще можно выдернуть номенклатуру и единицы измерения? Либо как эти запросы оптимизировать?
ВЫБРАТЬ
				Хозрасчетный.СубконтоКт1 КАК Номенклатура,
				Хозрасчетный.СубконтоКт1.ЕдиницаИзмерения КАК ЕдИзм,
				ЕСТЬNULL(Хозрасчетный.КоличествоКт,0) КАК Количество,
				Хозрасчетный.НомерСтроки КАК НомерСтроки,
				ЕСТЬNULL(Хозрасчетный.Сумма, 0) КАК Сумма,
				ЕСТЬNULL(ВЫРАЗИТЬ(Хозрасчетный.Сумма / Хозрасчетный.КоличествоКт КАК ЧИСЛО(10, 2)), 0) КАК Цена
			ИЗ
				РегистрБухгалтерии.Хозрасчетный.ДвиженияССубконто КАК Хозрасчетный
			ГДЕ
				Хозрасчетный.Регистратор В(&МассивСсылка)
			
			УПОРЯДОЧИТЬ ПО
				НомерСтроки
			АВТОУПОРЯДОЧИВАНИЕ
Показать
По теме из базы знаний
Найденные решения
10. SlavaKron 20.03.20 08:16 Сейчас в теме
(8) Возможно, стоит вообще отказаться от запроса к таблице ДвиженияССубконто и сделать запрос к физическим таблицам Хозрасчетный.
Попробуйте так:
ВЫБРАТЬ
	ВЫРАЗИТЬ(ХозрасчетныйСубконто.Значение КАК Справочник.Номенклатура) КАК Номенклатура,
	ВЫРАЗИТЬ(ХозрасчетныйСубконто.Значение КАК Справочник.Номенклатура).ЕдиницаИзмерения КАК ЕдИзм,
	Хозрасчетный.КоличествоКт КАК Количество,
	ХозрасчетныйСубконто.НомерСтроки КАК НомерСтроки,
	Хозрасчетный.Сумма КАК Сумма,
	ВЫРАЗИТЬ(Хозрасчетный.Сумма / Хозрасчетный.КоличествоКт КАК ЧИСЛО(10, 2)) КАК Цена
ИЗ
	РегистрБухгалтерии.Хозрасчетный.Субконто КАК ХозрасчетныйСубконто
		ЛЕВОЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Хозрасчетный КАК Хозрасчетный
		ПО (ХозрасчетныйСубконто.Регистратор = Хозрасчетный.Регистратор)
			И (ХозрасчетныйСубконто.НомерСтроки = Хозрасчетный.НомерСтроки)
ГДЕ
	ХозрасчетныйСубконто.Значение ССЫЛКА Справочник.Номенклатура
	И ХозрасчетныйСубконто.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияБухгалтерии.Кредит)
	И Хозрасчетный.Регистратор В (&МассивСсылка)

УПОРЯДОЧИТЬ ПО
	НомерСтроки
Показать
ipoloskov; +1 Ответить
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. VictorRGB2 14 19.03.20 16:50 Сейчас в теме
(1) попробуйте ограничить выборку счетами, а не только массивом документов
3. VmvLer 19.03.20 16:57 Сейчас в теме
Хозрасчетный.СубконтоКт1 

не при делах.

просто когда вы это поле не комментируете, то начинает работать
самое слабое звено
Хозрасчетный.Регистратор В(&МассивСсылка)

соединение с кучей таблиц и полный скан без индекса.

Если в МассивСсылка всегда документы одного вида, то можно
использовать Выразить, да и и от В лучше избавиться внутренним соединением.
4. SlavaKron 19.03.20 17:01 Сейчас в теме
Вместо
Хозрасчетный.СубконтоКт1.ЕдиницаИзмерения КАК ЕдИзм
сделать
ВЫРАЗИТЬ(Хозрасчетный.СубконтоКт1 КАК Справочник.Номенклатура).ЕдиницаИзмерения КАК ЕдИзм


(3)
Хозрасчетный.Регистратор В(&МассивСсылка)

Соединения с кучей таблиц не будет.
nomad_irk; +1 Ответить
5. user1302515 19.03.20 18:23 Сейчас в теме
(4)Не ожидал такой быстрый ответ! Спасибо, завтра попробую.
6. user633533_encantado 11 19.03.20 18:27 Сейчас в теме
(5) Проблема в том, что обращаясь к субконто через точку вы обращаетесь ко всем таблицам БД, которые входят в тип этого субконтов.

Поэтому и надо использовать выражение "выразить", чтобы сузить набор данных, к которым придется обращаться.
7. user1302515 19.03.20 19:15 Сейчас в теме
(6) Проблема в том, что я не понимаю в этом. Завтра попробую, отпишусь. Спасибо!
9. nomad_irk 76 20.03.20 07:57 Сейчас в теме
(7)Так может делегировать задачу на местном уровне тому, кто понимает, без привлечения телепатов с форумов?
8. user1302515 20.03.20 07:53 Сейчас в теме
(4) Увы, время запроса осталось прежним.
10. SlavaKron 20.03.20 08:16 Сейчас в теме
(8) Возможно, стоит вообще отказаться от запроса к таблице ДвиженияССубконто и сделать запрос к физическим таблицам Хозрасчетный.
Попробуйте так:
ВЫБРАТЬ
	ВЫРАЗИТЬ(ХозрасчетныйСубконто.Значение КАК Справочник.Номенклатура) КАК Номенклатура,
	ВЫРАЗИТЬ(ХозрасчетныйСубконто.Значение КАК Справочник.Номенклатура).ЕдиницаИзмерения КАК ЕдИзм,
	Хозрасчетный.КоличествоКт КАК Количество,
	ХозрасчетныйСубконто.НомерСтроки КАК НомерСтроки,
	Хозрасчетный.Сумма КАК Сумма,
	ВЫРАЗИТЬ(Хозрасчетный.Сумма / Хозрасчетный.КоличествоКт КАК ЧИСЛО(10, 2)) КАК Цена
ИЗ
	РегистрБухгалтерии.Хозрасчетный.Субконто КАК ХозрасчетныйСубконто
		ЛЕВОЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Хозрасчетный КАК Хозрасчетный
		ПО (ХозрасчетныйСубконто.Регистратор = Хозрасчетный.Регистратор)
			И (ХозрасчетныйСубконто.НомерСтроки = Хозрасчетный.НомерСтроки)
ГДЕ
	ХозрасчетныйСубконто.Значение ССЫЛКА Справочник.Номенклатура
	И ХозрасчетныйСубконто.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияБухгалтерии.Кредит)
	И Хозрасчетный.Регистратор В (&МассивСсылка)

УПОРЯДОЧИТЬ ПО
	НомерСтроки
Показать
ipoloskov; +1 Ответить
11. user1302515 20.03.20 09:04 Сейчас в теме
(10) ЧЕЛОВЕЧИЩЕ!!! Спасибо огромное, одним камнем на шее меньше. Пойду дальше разгребать завалы.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот