ВЫБОР КОГДА в параметрах виртуальной таблицы. #664418


#0 by SeiOkami
Имею два запроса. Не могу понять почему вариант 1 выполняется более чем в два раза быстрее второго. Неужели во втором запросе проблема в сравнении с параметром (он передается "Организация")? Первый запрос:    БухгалтерскийОбороты.Организация <> БухгалтерскийОбороты.Субконто1.Владелец    И (БухгалтерскийОбороты.Субконто1 Ссылка Справочник.ПодразделенияОрганизаций) Второй запрос (параметр = "Организация"): ВЫБРАТЬ
#1 by SeiOkami
пардон, &ОбъектСравнения передается "Организации"
#2 by 1Сергей
Владелец субконто? не удивительно
#3 by SeiOkami
и в первом и во втором запросе одни и те же условия. но скорость первого в два раза быстрее
#4 by SeiOkami
когда избавляюсь от ВЫБОР КОГДА (оставляю только условия первого ТОГДА), то скорость сокращается в двое. В чем фишка?
#5 by Maxus43
используй параметр ВидыСубконто в вирт таблице лучше. разные, субконто3 вобще не задействовано в 1-м
#6 by Maxus43
план запроса смотри, видимо превращает в кашу его твой выбор когда
#7 by SeiOkami
, но ведь по логике запроса сравнение "Субконто3.Владелец <> Субконто2" вообще не должно выполнятся
#8 by 1Сергей
или джойнить каждую строчку оборота регистра, или выбрать все строки регистра, а потом фильтрануть по джойну. Есть разница?
#9 by Широкий
При конструкции "Выбор" скуль вроде как построчный перебор включает. Я давно эту тему копал. Вроде как даже это индекс юзать не будет:
#10 by SeiOkami
, то бишь предпочтительнее поместить мое условие в ГДЕ? я пробовал. так действительно быстрее. но почему?
#11 by Maxus43
да условия у тебя разные совершенно, перенеси то что в ГДЕ в условия один в один и посмотри разницу, без всяких выбор когда
#12 by SeiOkami
, в первом запросе?
#13 by SeiOkami
Я не пойму в чем разница условий. если параметр будет равен "Организации", то и заходить в "отличающееся" условие не должно
#14 by Maxus43
твоё условие лучше переделать впринципе, о чем уже говорил...
#15 by SeiOkami
, то бишь выбор когда тормозит выборку из виртуальных?
#16 by Maxus43
должно не должно - этого платформа не знает, а план запроса делает так, как будто зайдёт вовсюда, тоесть в запросе другие таблицы присутсвуют
#17 by Maxus43
нельзя так категорично утверждать, но возможно. например ИЛИ тоже тормозит работу, с ним индексы перестают использоваться
#18 by Ksandr
ВЫРАЗИТЬ(Субконто1 КАК нибудь).Владелец
#19 by SeiOkami
дело в том, что запросом номер 2 я пытаюсь объединить два запроса, разница в которых лишь условие, чтобы поместить в СКД один запрос имеет условие: Не могу понять как реализовать это иначе =(
#20 by SeiOkami
, то бишь передавать вид субконто? сейчас сделаю. но как быть с
#21 by Maxus43
если передашь вид субконто, то у тебя будет только Субконто1, причем правильного типа
#22 by SeiOkami
, но ведь таким макаром я вырублю условие Субконто3.Владелец <> Субконто2, которое использует два субконто. И все равно мне придется делать ВЫБОР КОГДА
#23 by viktor_vv
А субконто3 какого типа ? Поди тоже подразделение ?
#24 by SeiOkami
, неа - другой справочник
#25 by SeiOkami
просто такая простая задачка, а какой-то пресловутый ВЫБОР КОГДА все портит
#26 by viktor_vv
Присоединюсь к , из-за Выбор индексы не используются.
#27 by Maxus43
передай 2 вида субконто
#28 by SeiOkami
Спасибо, задачу решил просто передавая три вида субконто, которые используются в запросе. хотя до сих пор меня смущает странная логика наложения условия при ВЫБОР КОГДА...
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

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