Варианты оптимизации запроса ? #685219


#0 by crazydimka
ВЫБРАТЬ ИЗ                 И Субконто3 В (&СкладРеализации) И Субконто2.Тара.ЛокальныйКодПродукции < 20                         И Субконто3 В (&СкладРеализации)                         И Субконто3 В (&СкладРеализации)     РегистрСведений.ЦеныНоменклатуры.СрезПоследних(
#1 by crazydimka
Помогите идеями кто чем сможет, изменения структуры метаданных не предлагать, индексирование измерений тоже=) Спасибо.
#2 by Лефмихалыч
план запроса посмотреть не предлагать?
#3 by crazydimka
это вроде сложно, надо разбираться, да и сейчас нет под рукой SQL... на файловой пишу. пока писал пришла идея заменить СчетУчета на Занчение(ПланыСчетов.Хозрасчетный.СчетГотовойПродукции), т.к. счет учета применяется один, или это не ускорит ?
#4 by Лефмихалыч
это ускорит только на строчку Запрос.УстановитьЗначениеПараметра ты в отчаянии, если думаешь, что кому-то интересно будет это читать внимательно
#5 by crazydimka
ммм.... копи паст в консоль запросов и делов) ну кто его знает, надежда!=)
#6 by crazydimka
кстати замер производительнсти на файловой СУБД и SQL СУБД будет отличаться, т.к. передалал все соединения с ВиртТаблицами на ВремТаблицы и  прирост только 4%....
#7 by Лефмихалыч
от херовой горы ВЫРАЗИТЬ(ХозрасчетныйОстатки.Субконто1 КАК Справочник.Номенклатура) стоило бы отказаться посредством дополнительной временной таблицы, в которой только одно поле кастовать
#8 by crazydimka
это вопрос=)
#9 by Лефмихалыч
а вообще, проблема в условиях вирутальной таблицы ОстаткиХозрасчетный это польный пердоманокль
#10 by Лефмихалыч
может будет, а может нет. Запрос - гогно и к типу СУБД это не имеет отношения
#11 by crazydimka
Условие по организации и складу надо вынести выше над "ИЛИ", не заметил, спасибо!
#12 by crazydimka
и за это спасибо, приму к сведению
#13 by Лефмихалыч
ты предсавляешь себе, сколько там соединений нарисовалось?
#14 by crazydimka
так точно ВЫРАЖАЛКУ ЗАБЫЛ!
#15 by Лефмихалыч
нахрена три раза вот это ИЛИ Организация = &Организация                         И Субконто3 В (&СкладРеализации) ? для красоты?
#16 by Лефмихалыч
короче, твой запрос - хлам. Убей его
#17 by crazydimka
ну чего, если все подправить, что ты посоветовад будет куда красивее)
#18 by Armando
>> ВЫРАЗИТЬ(ХозрасчетныйОстатки.Субконто1 КАК Справочник.Номенклатура).Ссылка КАК Ссылка, Здесь просто ХозрасчетныйОстатки.Субконто1 КАК Ссылка. Все остальные ВЫРАЗИТЬ в этом пакете по отношению к ХозрасчетныйОстатки.Субконто1 можно убрать, т.к. ты его уже выразил в предыдущем пакете. Как сказал этот кусок надо вынести "за скобки".
#19 by crazydimka
спасибо, убераю
#20 by Armando
Еще бы на Субкното1 условие наложить, если есть возможность. Чтоб индексы по Субконто2 и 3 задействовались. Иначе Table Scan по ним будет, или как он там называется.
#21 by crazydimka
а поможет ли изменение &Дата, если оно равно конец сегодняшнего дня на "пустоезначение", остатки на ТА получаются вроде быстрее ? или я не прав ? я думаю можно получить ВремТаблицу по срезупоследних регистра ЦеныНоменклатуры и выгрузить колонку с номенклатурой в это условие(т.к. главное условие что бы в подбор попадали остакти только с установленными ценами), или это не "рентабельно" ?
#22 by Armando
>> а поможет ли изменение &Дата, если оно равно конец сегодняшнего дня на "пустоезначение" Скорее всего не поможет. >> получить ВремТаблицу по срезупоследних регистра ЦеныНоменклатуры и выгрузить колонку с номенклатурой в это условие План запроса можно и на файловой базе смотреть. Через ТЖ. Недавно стал юзать "Инструменты разработчика". Анализ ТЖ доставляет. Там можно прям из консоли запросов включить ТЖ и посмотреть как этот запрос на БД исполняется.
#23 by crazydimka
спасибо попробую разобраться с помощью ТЖ
#24 by Armando
Кстати, счет активный или пассивный? Зачем количество по Дт и Кт анализируется?
#25 by Полотенчик
Какой хотя бы запрос в пакете долго выполняется? ВТ ОстаткиХозрасчетный долго делается? Мне кажется что Субконто2.Тара.ЛокальныйКодПродукции < 20 в параметрах вирт. таблице не айс. Получи нужные субконто во временную таблицу, и используй "субконто2 в (выбрать субконто из ВТсубконто2)"
#26 by crazydimka
Счет Активный, можно использовать КоличествоОстаток ?
#27 by crazydimka
ВТЦеныНоменклатурыСрезПоследних КАК ЦеныНоменклатурыСрезПоследних 50% времени, хотя поля соединения проиндексированы....
#28 by Armando
КоличествоОстатокДт или КоличествоОстаток
#29 by Полотенчик
соединить по ссылке, которую уже выразил как справочник номенклатура?
#30 by crazydimka
спасибо, полезно
#31 by crazydimka
попробую
#32 by Полотенчик
и ВТОстаткиХоз, соответственно, проиндексировать по этой ссылке
#33 by Armando
Если субконто1 отфильтруешь по номенклатуре из регистра цен, тогда в соединении с ВТЦеныНоменклатурыСрезПоследних и ВТОстаткиХоз можно использовать внутреннее соединение и отказаться от естьnull
#34 by crazydimka
спасибо за наводку на внутренее соединение
#35 by Armando
покажи хоть как сейчас запрос выглядит?
#36 by crazydimka
упс секундочку, я его развалил... минут 15-20 надо, валится на уже существующую ВТ не вьеду вроде один раз ее помещаю...
#37 by crazydimka
ВЫБРАТЬ ИЗ                 И Склад В (&СкладРеализации)                 И Номенклатура В (&МассивНоменклатуры)                 И Партия В (&МассивПартий)) КАК ПродукцияВРезервеНаСкладахОстатки             &ВидыСубконто,             (Организация = &Организация И Субконто1 В (&МассивНоменклатуры) И Субконто2 В (&МассивПартий))
#38 by crazydimka
еще не все спаял
#39 by Armando
Уже лучше) Остальное завтра смогу посмотреть
#40 by crazydimka
спасибо, буду признателен!
#41 by Armando
Получилось еще что-нибудь?
#42 by shurikvz
Я бы ИНДЕКСИРОВАТЬ ПО попробовал поубирать. От них вреда больше бывает чем пользы.
#43 by crazydimka
да спасибо, пользователям понравилось=) просто раньше он был на вирт таблицах вообще=) и сильно тормозил
#44 by crazydimka
в этом конкретном случае они помогли=)
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С