powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / [игнор отключен] [закрыт для гостей] / Чем неоптимален данный запрос?
25 сообщений из 66, страница 1 из 3
Чем неоптимален данный запрос?
    #39021132
sevdo_tool
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Чем неоптимален данный запрос?

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
ВЫБРАТЬ

Реализация.Номенклатура

ИЗ

Документ.ПродажаТоваров.СписокТоваров КАК Реализация

ГДЕ

Реализация.Ссылка.Проведен

И Реализация.Ссылка.Дата МЕЖДУ &ДатаНач И &ДатаОкон

И Реализация.Ссылка.Договор.ВидДоговора = &ВидДоговора

СГРУППИРОВАТЬ ПО

Реализация.Номенклатура
...
Рейтинг: 0 / 0
Чем неоптимален данный запрос?
    #39021137
Фотография Shuhard
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в 1С не принято строить отчёты по документам, поэтому в любой типовой будет Рг Продажи/ПродажиСебестоимость, к которому и стоит обратится

если речь о самописке, то нужно этот оборотный Рг создать
...
Рейтинг: 0 / 0
Чем неоптимален данный запрос?
    #39021146
sevdo_tool
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Регистры это понятно.
А если сам запрос посмотреть, без учета регистров.
...
Рейтинг: 0 / 0
Чем неоптимален данный запрос?
    #39021300
Программист 1с
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. Сначала выбрать документы согласно условию. (поля ссылка и договор)
2. Левое соединение с справочником договоры и получить вид договора.
3. Потом соединение с табличной частью и группировка по номенклатуре.


ps Такой запрос не нужно оптимизировать. На скорую руку +- 5 секунд не играет никакой роли.

psps 2 точки и больше - нежелательно применять в запросах.
...
Рейтинг: 0 / 0
Чем неоптимален данный запрос?
    #39021321
Mad_Head
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Программист 1с,

То что вы написали вряд ли будет оптимизацией с большой долей вероятности, то что вы написали и то что написал автор топика даст одинаковый запрос в СУБД.
...
Рейтинг: 0 / 0
Чем неоптимален данный запрос?
    #39021399
Программист 1с
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mad_HeadПрограммист 1с,

То что вы написали вряд ли будет оптимизацией с большой долей вероятности, то что вы написали и то что написал автор топика даст одинаковый запрос в СУБД.Да ну?

Тогда расскажите про работу оптимизатора во всех СУБД, с которыми работает 1с. А также не забудьте рассказать про файловый вариант, что творится в нем.

ps Вы беретесь предсказывать планы запроса в скуле? Или признаете что на практике скуль может любой запрос вывернуть как ему хочется?
...
Рейтинг: 0 / 0
Чем неоптимален данный запрос?
    #39021421
DoctorRoza
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Программист 1с,
Учите мат. часть! Такое понятие как разыменование полей знаете? И что оно значит? Обращение к поле через точку плохо только для СОСТАВНОГО ТИПА!!
Все остальное - это "нормально" для 1С!
...
Рейтинг: 0 / 0
Чем неоптимален данный запрос?
    #39021465
Последний выдох ГПЖ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sevdo_toolЧем неоптимален данный запрос?

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
ВЫБРАТЬ

Реализация.Номенклатура

ИЗ

Документ.ПродажаТоваров.СписокТоваров КАК Реализация

ГДЕ

Реализация.Ссылка.Проведен

И Реализация.Ссылка.Дата МЕЖДУ &ДатаНач И &ДатаОкон

И Реализация.Ссылка.Договор.ВидДоговора = &ВидДоговора

СГРУППИРОВАТЬ ПО

Реализация.Номенклатура



запрос как запрос... может имеет смысл рассмотреть его преобразования в джоин с временной таблицей (ради избавления от "неявного разыменования договора"), но это надо план выполнения смотреть может там цикл nest loop по целой пачке документов... без него (плана) разговор беспредметный... обычный запрос из конструктора которых и в типовых овердокуа
...
Рейтинг: 0 / 0
Чем неоптимален данный запрос?
    #39021488
Программист 1с
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DoctorRozaПрограммист 1с,
Учите мат. часть! Такое понятие как разыменование полей знаете? И что оно значит? Обращение к поле через точку плохо только для СОСТАВНОГО ТИПА!!
Все остальное - это "нормально" для 1С!Ух ты. Откуда подобную глупость взяли? Ссылочку пожалуйста на официальный ответ 1с. (А заодно рекомендую сходить на базовые курсы 1с и узнать за какое количество точек в запросе снижают оценку.)

ps То что у Вас есть понимание что происходит при соединении с составным полем, не значит что Вы знаете что происходит в других случаях. Приведите тогда план запроса, или сразу признаетесь что экстрасенс?
...
Рейтинг: 0 / 0
Чем неоптимален данный запрос?
    #39021495
Программист 1с
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DoctorRozaПрограммист 1с,
Учите мат. часть! Такое понятие как разыменование полей знаете? И что оно значит? Обращение к поле через точку плохо только для СОСТАВНОГО ТИПА!!
Все остальное - это "нормально" для 1С!Специально для Вас пример Ваших незнаний (Можно рассказывать и дальше что 10 точек это нормально):

ВЫБРАТЬ

Реализация.Номенклатура

ИЗ

Документ.ПродажаТоваров.СписокТоваров КАК Реализация

ГДЕ

Реализация.Ссылка.Проведен

И Реализация.Ссылка.Дата МЕЖДУ &ДатаНач И &ДатаОкон

И Реализация.Ссылка.Договор.ВидДоговора.УсловияДоговора.ОсновныеУсловия.ВидОтстрочки = &ВидОтсрочки

СГРУППИРОВАТЬ ПО

Реализация.Номенклатура
...
Рейтинг: 0 / 0
Чем неоптимален данный запрос?
    #39021510
andr_andrey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По-моему, единственные большие множества в этом соединении - это реализации и договоры.
Возможно, имеет смысл перед соединением их ограничить.
Остальное оптимизировать не стоит.
...
Рейтинг: 0 / 0
Чем неоптимален данный запрос?
    #39021582
DoctorRoza
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Программист 1сDoctorRozaПрограммист 1с,
Учите мат. часть! Такое понятие как разыменование полей знаете? И что оно значит? Обращение к поле через точку плохо только для СОСТАВНОГО ТИПА!!
Все остальное - это "нормально" для 1С!Специально для Вас пример Ваших незнаний (Можно рассказывать и дальше что 10 точек это нормально):

ВЫБРАТЬ

Реализация.Номенклатура

ИЗ

Документ.ПродажаТоваров.СписокТоваров КАК Реализация

ГДЕ

Реализация.Ссылка.Проведен

И Реализация.Ссылка.Дата МЕЖДУ &ДатаНач И &ДатаОкон

И Реализация.Ссылка.Договор.ВидДоговора.УсловияДоговора.ОсновныеУсловия.ВидОтстрочки = &ВидОтсрочки

СГРУППИРОВАТЬ ПО

Реализация.Номенклатура


Еще раз! Обращение через точку - это механизм, узаконенный самой 1С. Называется РАЗЫМЕНОВАНИЕ ПОЛЕЙ! Он упрощает написание запросов, при этом вся аналитическая работа по созданию плана запроса падает на СУБД. Когда идет обращение к полю ЕДИНИЧНОГО типа, НИЧЕГО страшного в плане запроса SQL НЕ ПРОИСХОДИТ! Да, добавляются левые соединения в запрос T-SQL и ЧТО С ТОГО? Из логики задачи, для "оптимальности", Вы просто перепишете запрос 1С так, как он сейчас транслируется из сервера 1С (с левыми соединениями и т.п.) и НЕ БОЛЕЕ ТОГО! Обращение через точку плохо, когда идет обращение к СОСТАВНОМУ ТИПУ ДАННЫХ:
//
Регистратор.Ссылка.Ссылка - вот это зло! (да, такое я встречал)
//
Многократное обращение через точку - соглашусь с Вами, это не комильфо, ошибка архитектуры, но не критично! Ну будет 10 левых соединений и что? Это не та нагрузка для системы! А вот когда составной тип, там уже уже веселее! :)

Автору надо это понять и .. познакомиться с трассировкой и планом запроса, а то так и будет .. "ведра подавать"! :)
...
Рейтинг: 0 / 0
Чем неоптимален данный запрос?
    #39021597
Mad_Head
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Программист 1сMad_HeadПрограммист 1с,

То что вы написали вряд ли будет оптимизацией с большой долей вероятности, то что вы написали и то что написал автор топика даст одинаковый запрос в СУБД.Да ну?

Тогда расскажите про работу оптимизатора во всех СУБД, с которыми работает 1с. А также не забудьте рассказать про файловый вариант, что творится в нем.

ps Вы беретесь предсказывать планы запроса в скуле? Или признаете что на практике скуль может любой запрос вывернуть как ему хочется?

Смешались люди и кони. Я берусь предсказывать трансляцию запроса из 1с в скуль, и не в коем случае план запроса так как для этого нет никакой инфы. Обращение через точку даст join.
...
Рейтинг: 0 / 0
Чем неоптимален данный запрос?
    #39021608
Последний выдох ГПЖ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DoctorRozaно не критично! Ну будет 10 левых соединений и что? Это не та нагрузка для системы!

без плана выполнения это пустой разговор
...
Рейтинг: 0 / 0
Чем неоптимален данный запрос?
    #39021668
Zerro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
взял попкорн..посижу посмотрю что дальше будет. По мне вопрос скорости.. если оптимизация не важна то можно писать с точками...
Было раз - сказли оптимизировать отчет.. для 3 потратил чтоб точки убрать только - прирост был пол секунды (в цикле чтоб по точкам не бегать). Оказалось что что самое крупное подтесал то и хватило..а это уже мазохизмом было.
...
Рейтинг: 0 / 0
Чем неоптимален данный запрос?
    #39021764
autsaider
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
sevdo_toolЧем неоптимален данный запрос?

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
ВЫБРАТЬ

Реализация.Номенклатура

ИЗ

Документ.ПродажаТоваров.СписокТоваров КАК Реализация

ГДЕ

Реализация.Ссылка.Проведен

И Реализация.Ссылка.Дата МЕЖДУ &ДатаНач И &ДатаОкон

И Реализация.Ссылка.Договор.ВидДоговора = &ВидДоговора

СГРУППИРОВАТЬ ПО

Реализация.Номенклатура



Все что нужно - проверить, чтобы поле Договор было индексировано.
В остальном запрос нормальный.
...
Рейтинг: 0 / 0
Чем неоптимален данный запрос?
    #39021768
autsaider
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
autsaidersevdo_toolЧем неоптимален данный запрос?

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
ВЫБРАТЬ

Реализация.Номенклатура

ИЗ

Документ.ПродажаТоваров.СписокТоваров КАК Реализация

ГДЕ

Реализация.Ссылка.Проведен

И Реализация.Ссылка.Дата МЕЖДУ &ДатаНач И &ДатаОкон

И Реализация.Ссылка.Договор.ВидДоговора = &ВидДоговора

СГРУППИРОВАТЬ ПО

Реализация.Номенклатура



Все что нужно - проверить, чтобы поле Договор было индексировано.
В остальном запрос нормальный.

Невнимательно посмотрел запрос - индексирование поля Дововор не обязательно, отбора по нему нет. Запрос в норме
...
Рейтинг: 0 / 0
Чем неоптимален данный запрос?
    #39021770
autsaider
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DoctorRozaМногократное обращение через точку - соглашусь с Вами, это не комильфо, ошибка архитектуры, но не критично! Ну будет 10 левых соединений и что? Это не та нагрузка для системы! А вот когда составной тип, там уже уже веселее! :)

Полностью согласен
...
Рейтинг: 0 / 0
Чем неоптимален данный запрос?
    #39021832
Программист 1с
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DoctorRozaЕще раз! Обращение через точку - это механизм, узаконенный самой 1С. Называется РАЗЫМЕНОВАНИЕ ПОЛЕЙ! Он упрощает написание запросов, при этом вся аналитическая работа по созданию плана запроса падает на СУБД. Когда идет обращение к полю ЕДИНИЧНОГО типа, НИЧЕГО страшного в плане запроса SQL НЕ ПРОИСХОДИТ! Да, добавляются левые соединения в запрос T-SQL и ЧТО С ТОГО? Из логики задачи, для "оптимальности", Вы просто перепишете запрос 1С так, как он сейчас транслируется из сервера 1С (с левыми соединениями и т.п.) и НЕ БОЛЕЕ ТОГО! Обращение через точку плохо, когда идет обращение к СОСТАВНОМУ ТИПУ ДАННЫХ:
//
Регистратор.Ссылка.Ссылка - вот это зло! (да, такое я встречал)
//
Многократное обращение через точку - соглашусь с Вами, это не комильфо, ошибка архитектуры, но не критично! Ну будет 10 левых соединений и что? Это не та нагрузка для системы! А вот когда составной тип, там уже уже веселее! :)

Автору надо это понять и .. познакомиться с трассировкой и планом запроса, а то так и будет .. "ведра подавать"! :)Еще раз прошу официальную ссылочку что разрешено 10 точек. А также прошу ссылочку с экзамена 1с - почему там снижают оценку за количество точек. Или мы считаем это просто Вашим частным и неправильным мнением?

Специально для Вас: встречал запросы (кстати на учебе в 1с приводили аналогичные примеры) с несколькими точками - выполняющиеся минуты. После оптимизации - доли секунды. Это некритично?

ps Вашу позиция: набросаю ***вна - а там пусть скуль сам разберется - не выдерживает никакой критики. Во первых есть другие варианты работы базы (а вы про них упорно забываете), во вторых умение думать про все компоненты работы системы отличает специалиста от дилетанта. (Зальем в бак не 92 а 76 - и так поедет).
...
Рейтинг: 0 / 0
Чем неоптимален данный запрос?
    #39021839
Программист 1с
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
autsaiderautsaiderпропущено...


Все что нужно - проверить, чтобы поле Договор было индексировано.
В остальном запрос нормальный.

Невнимательно посмотрел запрос - индексирование поля Дововор не обязательно, отбора по нему нет. Запрос в нормеА план запроса?
...
Рейтинг: 0 / 0
Чем неоптимален данный запрос?
    #39021929
DoctorRoza
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Программист 1с,
Автору кто-то напел, или не напел, в уши, про неоптимальность его запроса! Если начать переписывать запрос, убирать обращения через точки, то мы получим такой же запрос, что и сейчас дает План запроса на T-SQL (конечно, не углубляясь в задачу). Ну так почему мы говорим про неоптимальность, если получаем те же яйца только с боку?

Этот запрос оптимальный?
ВЫБРАТЬ
Номенклатура.Ссылка
ИЗ
Справочник.Номенклатура КАК Номенклатура
ГДЕ
Номенклатура.ВидНоменклатуры.ТипНоменклатуры = &ТипНоменклатуры

А этот?
ВЫБРАТЬ
Номенклатура.Ссылка
ИЗ
Справочник.Номенклатура КАК Номенклатура
ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.ВидыНоменклатуры КАК ВидыНоменклатуры
ПО Номенклатура.ВидНоменклатуры = ВидыНоменклатуры.Ссылка
ГДЕ
ВидыНоменклатуры.ТипНоменклатуры = &ТипНоменклатуры

А есть ли разница?
...
Рейтинг: 0 / 0
Чем неоптимален данный запрос?
    #39021963
Программист 1с
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DoctorRozaПрограммист 1с,
Автору кто-то напел, или не напел, в уши, про неоптимальность его запроса! Если начать переписывать запрос, убирать обращения через точки, то мы получим такой же запрос, что и сейчас дает План запроса на T-SQL (конечно, не углубляясь в задачу). Ну так почему мы говорим про неоптимальность, если получаем те же яйца только с боку?1. Еще раз - вы гадалка предсказываете план запроса? Абсолютная уверенность? Да ну?

2. Не уводите разговор в сторону (написать простейший запрос любой может). Напишите запрос с кучей точек и потом гадайте во что он превратится.
...
Рейтинг: 0 / 0
Чем неоптимален данный запрос?
    #39021992
DoctorRoza
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Программист 1с,

1. Я знаю во что превратиться запрос Автора в Плане запроса! Он будет подобием того, что я написал выше. Проверяйте в Profiler'е если не верите!
2. Мне не о чем говорить с Вами говорить, извините. Я от собеседника всегда ожидаю каких-то фактов. Вы же зарядили про 10 точек и все тут!

Автор!
Ваш запрос оптимален в допущениях самой 1С. Изучите внимательней Разыменование полей. В запросе лучше не использовать обращение через точку, но это допустимо! Много обращений через точку - это плохо! Помните, что обращение через точку к полю составного типа - это МЕГА плохо! Рекомендую изучить работу с трассировками и планами запроса в Profiler. Стройте запросы и Вас все станет понятно! Пока, как я вижу, для Вас это туман! Ничего, разберетесь!
Успехов!
Закрывайте тему! :)
...
Рейтинг: 0 / 0
Чем неоптимален данный запрос?
    #39022367
Программист 1с
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DoctorRoza1. Я знаю во что превратиться запрос Автора в Плане запроса! Он будет подобием того, что я написал выше. Проверяйте в Profiler'е если не верите!Пожалуйста покажите план запроса из sql, оракл, постгрее, и в файловом варианте.

А так как Вы это сделать не можете - очевидно признание Вашей лжи и некомпетентности в данном пункте.DoctorRozaПрограммист 1с,
Учите мат. часть! Такое понятие как разыменование полей знаете? И что оно значит? Обращение к поле через точку плохо только для СОСТАВНОГО ТИПА!!
Все остальное - это "нормально" для 1С!DoctorRozaМного обращений через точку - это плохо!Ух ты оказывается всё-таки плохо обращаться через много точек. А до этого говорили обратное...

Надеялся на длинный спор, а Вы так быстро слились...


ps В следующий раз когда будете указывать собеседнику указание учить мат часть, сначала неплохо бы бревно в своем глазу заметить...
...
Рейтинг: 0 / 0
Чем неоптимален данный запрос?
    #39022381
Zerro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Программист 1сDoctorRoza1. Я знаю во что превратиться запрос Автора в Плане запроса! Он будет подобием того, что я написал выше. Проверяйте в Profiler'е если не верите!Пожалуйста покажите план запроса из sql, оракл, постгрее, и в файловом варианте.

А так как Вы это сделать не можете - очевидно признание Вашей лжи и некомпетентности в данном пункте.DoctorRozaПрограммист 1с,
Учите мат. часть! Такое понятие как разыменование полей знаете? И что оно значит? Обращение к поле через точку плохо только для СОСТАВНОГО ТИПА!!
Все остальное - это "нормально" для 1С!DoctorRozaМного обращений через точку - это плохо!Ух ты оказывается всё-таки плохо обращаться через много точек. А до этого говорили обратное...

Надеялся на длинный спор, а Вы так быстро слились...


ps В следующий раз когда будете указывать собеседнику указание учить мат часть, сначала неплохо бы бревно в своем глазу заметить...
Говорил что одна точка это не плохо и заворачиваться ради оптимизации не стоит
...
Рейтинг: 0 / 0
25 сообщений из 66, страница 1 из 3
Форумы / [игнор отключен] [закрыт для гостей] / Чем неоптимален данный запрос?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]