Почему медленно работает СКД, если использовать отбор по дате #564950


#0 by Ayvengo
ИЗ        КатегорииОбъектов.Категория.Наименование = "Документы получены"        И (КатегорииОбъектов.Объект ССЫЛКА Документ.РеализацияТоваровУслуг                ИЛИ КатегорииОбъектов.Объект ССЫЛКА Документ.ПоступлениеТоваровУслуг)) КАК КатегорииОбъектов        ПоступлениеТоваровУслуг.Проведен        И (НЕ ПоступлениеТоваровУслуг.Ссылка В                    (ВЫБРАТЬ                    ИЗ        РеализацияТоваровУслуг.Проведен        И (НЕ РеализацияТоваровУслуг.Ссылка В                    (ВЫБРАТЬ                    ИЗ Вроде бы запрос простой. С отбором по "Дата документа" начинается жесть.. минуту где-то грузиться = Это нормально вообще?
#1 by Axel2009
для кого простой? и где отбор?
#2 by Ayvengo
в СКД на закладке отбор :)
#3 by GANR
А если попробовать сделать список НЕОБЯЗАТЕЛЬНЫХ полей в тексте запроса {...}??? В SQL-варианте запрос должен выглядеть по-другому с учетом всяких там настроек.
#4 by Ayvengo
а по-подробнее?:)
#5 by GANR
ну... как-то так: ВЫБРАТЬ РАЗРЕШЕННЫЕ
#6 by GANR
КатегорииОбъектов.Документ.Дата - каждая точка - это на уровне конечного запроса ещё одно левое соединение. Они очень здорово влияют на производительность. Можно предположить, что отбор - это условие ГДЕ, кладущееся поверх выборки.
#7 by GANR
Можно технологический журнал смотреть в таких случаях, смотреть запрос в "чистом" SQL-ном виде.
#8 by GANR
А временные таблицы можно попробовать ???
#9 by Fragster
потому что СКД не умеет автозаполнение юзать для вложенных запросов и применяет фильтр уже к результату вложенного запроса. Помочь ей можно на вкладке "компоновка данных" в конструкторе, когда редактируется вложенный запрос.
#10 by Fragster
компоновка данных->>условия
#11 by GANR
+,Вижу такой вариант: сначала во ВРЕМЕННЫЕ таблицы выбрать с необязательными условиями, а затем уже к этим ВТ обращаться. Хороший пример - отчет "карточка счета" из типовых на компоновке.
#12 by Fragster
один фиг
#13 by Ayvengo
без отбора быстро работает, а с отбором медленно - это меня смутило = 6
#14 by GANR
Попробуй сделать из вложенных запросов временные таблицы и добавь в них на закладке "Компоновка данных" необязательные поля и необязательные условия.
#15 by Axel2009
условие нужно не на общий запрос, а на каждый в объединить с фигурными скобками и все будет работать. а вообще 3 раза цеплять таблицу категорий - круто.
#16 by Ayvengo
мало что измениться, если я ее буду цеплять даже 50 раз :) А вот на счет условия интересно, надо попробовать.
#17 by Axel2009
изменится много чего. от количества раз обращений зависит скорость выполнения запроса.
#18 by Ayvengo
не соглашусь :Р идите пробуйте, если хотите доказать :)
#19 by Axel2009
да пилите шура пилите. мне то что доказывать. я знаю
#20 by Ayvengo
знание - это не только теория ;) попробуйте и удивитесь :)
#21 by Fragster
условия там 3 разных -> обращения будет 3
#22 by Axel2009
запросов напрямую к скулю а написал переписал. и планы выполнения изучил от и до. и могу сказать что у меня вся теория подкреплена практикой.
#23 by Ayvengo
А почему тогда такой запрос, если его скопировать.. ну я 20 раз скопировал, никакой разницы во времени выполнения, практически?    ПоступлениеТоваровУслуг.Ссылка ИЗ    Документ.ПоступлениеТоваровУслуг КАК ПоступлениеТоваровУслуг ГДЕ    (НЕ ПоступлениеТоваровУслуг.Ссылка В                (ВЫБРАТЬ                    КатегорииОбъектов.Объект                ИЗ
#24 by Ayvengo
КатегорииОбъектов.Объект.НомерВходящегоДокумента КАК Номер,    КатегорииОбъектов.Категория.Наименование = "Документы получены"    И (КатегорииОбъектов.Объект ССЫЛКА Документ.РеализацияТоваровУслуг            ИЛИ КатегорииОбъектов.Объект ССЫЛКА Документ.ПоступлениеТоваровУслуг) ;    РеализацияТоваровУслуг.Проведен    И (НЕ РеализацияТоваровУслуг.Ссылка В                (ВЫБРАТЬ                ИЗ                    КатегорииОбъектов.Категория.Наименование = "Документы получены"                    И КатегорииОбъектов.Объект ССЫЛКА Документ.РеализацияТоваровУслуг)) ; Такой запрос уже побыстрее работает, но все-равно при отборе по дате документа также долго:(
#25 by Axel2009
ну покажи с отбором твой запрос
#26 by Axel2009
как как скопировал??
#27 by Ayvengo
ну я не могу его показать, отборы в СКД работают (настройки, закладка отбор) там ДатаДокумента >= указанная дата и ДатаДокумента < Указанная дата
#28 by Ayvengo
в конструкторе запросов на закладке объединения/псевдонимы правой кнопкой на запрос1, скопировать и тд.
#29 by Fragster
на инфостарте есть констоль отчетов скд с поакзом текста результируюшего запроса - это много объясняет
#30 by Axel2009
а я сказал отбор по дате завернуть в фигурные скобки и параметры указывать в них для каждого из запросов.
#31 by Ayvengo
не понимаю как это сделать
#32 by Axel2009
Время формирования результата - 76 093 мс (4 раза соединил категории объектов) Время формирования результата - 17 219 мс (1 раз указал категорию объектов) наверна записей то пшик в таблице
#33 by Ayvengo
Запрос.выполнить или ты еще и выгружал?
#34 by Axel2009
хаха. конечно его выгружать надо. а то твои выполнить ниче не стоят.
#35 by Axel2009
ВЫБОР        КОГДА КатегорииОбъектов.Объект ЕСТЬ NULL {ГДЕ ПоступлениеТоваровУслуг.Дата КАК ДатаДокумента}    ВЫБОР        КОГДА КатегорииОбъектов.Объект ЕСТЬ NULL    РеализацияТоваровУслуг.Проведен {ГДЕ РеализацияТоваровУслуг.Дата КАК ДатаДокумента}
#36 by Ayvengo
конечно, он будет дольше выполняться, потому что таблица в 4 раза больше стала = 34
#37 by Axel2009
внезапно! ВЫБРАТЬ    ОбщийЗапрос.Объект, ; ВЫБРАТЬ КОЛИЧЕСТВО(*) ИЗ (ВЫБРАТЬ * ИЗ ТаблицаТест) КАК Тест
#38 by Ayvengo
да не, не внезапно, ты попробуй запрос свой засунуть во вложенный запрос, а потом это все сгруппировать :)
#39 by Axel2009
какой из вложенных запросов засунуть во вложенный запрос?
#40 by Ayvengo
да я все про ВЫБРАТЬ    ПоступлениеТоваровУслуг.Ссылка КАК Ссылка ИЗ    Документ.ПоступлениеТоваровУслуг КАК ПоступлениеТоваровУслуг ГДЕ    (НЕ ПоступлениеТоваровУслуг.Ссылка В                (ВЫБРАТЬ                    КатегорииОбъектов.Объект                ИЗ делаешь таких 10 и засовываешь их во вложенный, а потом вложенный запрос группируешь по Ссылке :) База у меня не большая .. да и большую взять не где :(
#41 by Axel2009
ты этого сгруппированного то выгружал или опять только выполнил??
#42 by Aprobator
офигеть. Псевдонимы таблиц, что в подазпросе, что в запросе уровнем выше один и тот же. По рукам за такое. Еще небось и автозаполнение полей в СКД стоит.
#43 by Ayvengo
где вы там одинаковые увидели? ПТУ, РТУ и КатегорииОбъектов
#44 by Axel2009
ты 35 то пробовал вообще?
#45 by Ayvengo
я в консоли запрос делаю, так что выгружаю даже в видимую таблицу.
#46 by Axel2009
скока показывает ВЫБРАТЬ КОЛИЧЕСТВО(*) ИЗ Документ.ПоступлениеТоваровУслуг
#47 by Ayvengo
целых 90 :))) да я просто делал запрос в 2к строк, там куча похожих запросов была, в одном месте себестоимость надо, в другом количество для расчета маржи и т.д. надо было выводить это все в разные строки ... и условие было делать все это в скд... в принципе отчет формировался за секунд 5-10. Отчет по товарам на складах - формируется столько же времени :) По-этому делаю такие выводы... хотя .. категории не виртуальная таблица = 46
#48 by Aprobator
реально не видно? Смотри тогда:
#49 by Ayvengo
ну у вложенного запроса и запроса внутри этого вложенного запроса имена одинаковые - а чем это плохо?:)
#50 by Ayvengo
на данный момент я разницы между и не ощущаю :)
#51 by Ayvengo
прикольно, отказался от автозаполнения, настроил в компоновке поля и условия и все четко работает :) спасибо :) Axel2009 - тебе тоже спасибо, все-таки про дату намекал, но как-то через текст запроса :)
#52 by Axel2009
ппц чукча писатель. свои своими же тестирует.. сиди и живи с медленными крутыми запросами.
#53 by Ayvengo
мда, спасибо за оскорбление ... буду знать тролей в лицо.
#54 by Ayvengo
Такой запрос работает значительно быстрее в СКД:    КатегорииОбъектов.Объект.НомерВходящегоДокумента КАК Номер, ГДЕ    Категории.Документ.Проведен
#55 by Axel2009
я в переписал твой запрос, за тебя твою работу сделал. писателей буду знать в лицо. аревидерчи.
#56 by Ayvengo
учись объяснять и не оскорблять собеседников, что бы не получать в ответ взаимность. ага, ага ... всю работу ;)
#57 by Aprobator
запрос конечно тоже ролляет. Но СКД - штука нежная, особенно при автозаполнении и дублях псевдонимов таблиц. Частенько выскакивают ошибки (из за дублей) типа - поле не однозначно. Потому дублей следует избегать. Переименовать таблицу в конструкторе запроса 5 секунд.
#58 by Aprobator
а условие ПРОВЕДЕН с каким умыслом не при формировании ВТ сделано?
#59 by Aprobator
а - увидел. Не до конца запрос разобрал.
#60 by Aprobator
был бы основной затык именно в запросе, то запрос в целом медленно отрабатывал бы, а не только при использовании отбора.
#61 by Ayvengo
видимо уже лень было лезть в ВТ :D
#62 by Ayvengo
хм, поле не однозначно выскакиевает обычно, когда имя реквизита в таблице совпадает с именем таблицы, часто это с номенклатурой случается :) Когда мы пытаемся, к примеру, выгрузить справочник номенклатуры и ссылку переименовываем в Номенклатура :)
#63 by Aprobator
мое дело прокукарекать - дальше сам решай.
#64 by Ayvengo
хотя я в конструкторе запросов встречался с таким, что когда делаешь один вложенный запрос, а потом его объединяешь (копируя) потом изменял второй и изменялся первый :) ересь какая-то, но такое бывало = 63
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям
Back to top