powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / [игнор отключен] [закрыт для гостей] / Чем неоптимален данный запрос?
66 сообщений из 66, показаны все 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
Чем неоптимален данный запрос?
    #39022397
AHDP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Программист 1с,

Этого аргумент на экзамене?

Основные причины неоптимальной работы запросов, диагностируемые на уровне кода конфигурации и структуры метаданных:

соединения с подзапросами;
соединения с виртуальными таблицами;
несоответствие индексов и условий запроса;
использование логического ИЛИ в условиях;
использование подзапросов в условии соединения;
получение данных через точку от полей составного типа;
фильтрация виртуальных таблиц без использования параметров.


P.S. Подчеркну, что в шестым упомянуто разыменовывание полей только СОСТАВНОГО типа.

P.P.S. Допускаю, что автор отсортировал не по неоптимальности, а по длине наименования (для лучшего визуального восприятия).
...
Рейтинг: 0 / 0
Чем неоптимален данный запрос?
    #39022400
Программист 1с
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ZerroГоворил что одна точка это не плохо и заворачиваться ради оптимизации не стоитПрограммист 1сpsps 2 точки и больше - нежелательно применять в запросах.Может всетаки 2? (А на самом деле при 3 точках как раз и наблюдал падение скорости запроса в десятки раз)

А автору дал ответ исходя из рекомендаций курсов 1с, где скорее всего ему и дали такую задачу.
...
Рейтинг: 0 / 0
Чем неоптимален данный запрос?
    #39022446
Программист 1с
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AHDP, ты сам заметишь слово в цитате (и оно отличается от слова "все")?

https://its.1c.ru/db/metod8dev#content:5842:hdoc
AHDPТипичные причины неоптимальной работы запросов и методы оптимизации.Будешь спорить что куча точек для несоставного типа, не является причиной неоптимальной работы запроса?

ps Визуально согласен, естественно выглядит лучше.
...
Рейтинг: 0 / 0
Чем неоптимален данный запрос?
    #39022723
sevdo_tool
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Профайлер доступен только для клиент-серверного варианта работы насколько я понимаю?
...
Рейтинг: 0 / 0
Чем неоптимален данный запрос?
    #39022803
Последний выдох ГПЖ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sevdo_toolПрофайлер доступен только для клиент-серверного варианта работы насколько я понимаю?

профайлер в постгри тоже недоступен

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

Спрашивал ссылку - я её предоставил , дабы пресечь срач и взаимные оскорбления.



А по теме неоптимальности запроса только два однозначных замечания :
1) уточнить, для чего будут использоваться его результаты и, очень вероятно, что надо будет получать не ссылку , а наименование номенклатуры . Мы же не хотим получить на каждую строку неявный запрос к БД при выводе отчета ;
2) заменить группировку на Различные .

Остальные рекомендации обсуждать некорректно, т.к. они зависят не только от данных в БД , но и от параметров запроса .

Согласен с Shuhard , что документами пользоваться не стоит, но не согласен с приведенной аргументацией.
С точки зрения пользователя операция продажи может быть отображена и другим видом документов (корректировка, возврат...). И даже если пользователь просит показать ему только реализацию, то неплохо ему подсказать , что нужно смотреть и иные данные.
С точки зрения программиста - записи в регистре уже удовлетворяют одному условию (не нужно проверять просвещённость) и можно надеяться на попадание в индекс большего числа необходимых полей. В идеале запрос сведется к сканированию индекса регистра и чтению из 2х таблиц (договоры, номенклатура), против сканирования индекса таблицы договоры с последующим чтением из неё и чтением из 3х таблиц (товары, договоры, номенклатура). Итого выкинули одно условие и одну таблицу .

Программист 1с ,
1С не поддерживает хинты (мы же за MS SQL говорим), по этому оптимизатор будет в любом случае разгребать запрос, как бы он не был заковыристо написан.

autsaider ,
если будет индекс Проведен, Дата, Договор - то . Но за индексацию "лишних" данных надо карать не менее строго, чем за кривые запросы.
...
Рейтинг: 0 / 0
Чем неоптимален данный запрос?
    #39023118
Последний выдох ГПЖ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AHDP 1С не поддерживает хинты

поддерживает как минимум два

nolock и updlock
...
Рейтинг: 0 / 0
Чем неоптимален данный запрос?
    #39023365
AHDP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Последний выдох ГПЖ ,
Уточнение принимается, но к обсуждаемой теме не относиться.
...
Рейтинг: 0 / 0
Чем неоптимален данный запрос?
    #39023415
Последний выдох ГПЖ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AHDPУточнение принимается, но к обсуждаемой теме не относиться.

имхо тема сдохла давно
...
Рейтинг: 0 / 0
Чем неоптимален данный запрос?
    #39023888
Программист 1с
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AHDP, я в отпуск уезжаю. Потом поспорим
...
Рейтинг: 0 / 0
Чем неоптимален данный запрос?
    #39023906
javapecker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Программист 1с, мне кажется вы путаете текст запроса и план запроса. если с планом могут быть вопросы, то сам запрос, который придет в субд от 1с после преобразования в SQL - выглядит совершенно определенно, и это легко проверяется. Как уже сказали, точка для несоставных полей это просто левое соединение. и никакой разницы, сами вы это соединение опишете, или положитесь на запрос через точку - просто не существует.
...
Рейтинг: 0 / 0
Чем неоптимален данный запрос?
    #39023997
sevdo_tool
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
автор AHDPА по теме неоптимальности запроса только два однозначных замечания:
1) уточнить, для чего будут использоваться его результаты

Вообще эта задачку мне дали на проверку как тест:

Оптимизация запроса
В «1С:Управление торговлей» была реализована выгрузка списка проданных товаров во внешнюю сиситему. Со временем в базе было накоплено большое количество данных и выгрузка стала работать медленно. Замер времени выполнения показал, что основное время занимает выполнение следующего запроса:

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

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

ИЗ

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

ГДЕ

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

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

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

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

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



Предложите вариант оптимизации запроса.
...
Рейтинг: 0 / 0
Чем неоптимален данный запрос?
    #39024002
Zerro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sevdo_toolавтор AHDPА по теме неоптимальности запроса только два однозначных замечания:
1) уточнить, для чего будут использоваться его результаты

Вообще эта задачку мне дали на проверку как тест:

Оптимизация запроса
В «1С:Управление торговлей» была реализована выгрузка списка проданных товаров во внешнюю сиситему. Со временем в базе было накоплено большое количество данных и выгрузка стала работать медленно. Замер времени выполнения показал, что основное время занимает выполнение следующего запроса:

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

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

ИЗ

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

ГДЕ

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

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

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

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

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



Предложите вариант оптимизации запроса.
регистр продаж (дата1 и дата 2 и док = реализация)
...
Рейтинг: 0 / 0
Чем неоптимален данный запрос?
    #39024053
Последний выдох ГПЖ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>Реализация.Ссылка.Проведен
>И Реализация.Ссылка.Дата МЕЖДУ &ДатаНач И &ДатаОкон

стоит поменять местами - будет попадание в индекс [ОРРХ | ОРНР1 +] Дата + Ссылка
...
Рейтинг: 0 / 0
Чем неоптимален данный запрос?
    #39024185
sevdo_tool
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Последний выдох ГПЖстоит поменять местами - будет попадание в индекс [ОРРХ | ОРНР1 +] Дата + Ссылка
Об этом поподробнее, пожалуйста. Неужели порядок следования в условии ГДЕ на что-то влияет?
...
Рейтинг: 0 / 0
Чем неоптимален данный запрос?
    #39024226
Последний выдох ГПЖ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sevdo_toolПоследний выдох ГПЖстоит поменять местами - будет попадание в индекс [ОРРХ | ОРНР1 +] Дата + Ссылка
Об этом поподробнее, пожалуйста. Неужели порядок следования в условии ГДЕ на что-то влияет?

не тут наверное наврал - коллега говорит что порядок в где не важен оптимизатор сам определит как лучше зацепиться за индекс
...
Рейтинг: 0 / 0
Чем неоптимален данный запрос?
    #39024375
Программист 1с
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
javapeckerПрограммист 1с, мне кажется вы путаете текст запроса и план запроса. если с планом могут быть вопросы, то сам запрос, который придет в субд от 1с после преобразования в SQL - выглядит совершенно определенно, и это легко проверяется. Как уже сказали, точка для несоставных полей это просто левое соединение. и никакой разницы, сами вы это соединение опишете, или положитесь на запрос через точку - просто не существует.А в чем смысл разговора об запросе? Нам не важна производительность? Нам плевать какой мусор придет в sql? Поэтому разрешаем делать десять точек - ведь это просто левое соединение?

Или мы должны сделать так чтобы план запроса был оптимальным и sql не ошибался? Соответственно и запрос в 1с должен выглядеть по другому?
...
Рейтинг: 0 / 0
Чем неоптимален данный запрос?
    #39024377
Программист 1с
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Zerrosevdo_toolпропущено...


Вообще эта задачку мне дали на проверку как тест:

Оптимизация запроса
В «1С:Управление торговлей» была реализована выгрузка списка проданных товаров во внешнюю сиситему. Со временем в базе было накоплено большое количество данных и выгрузка стала работать медленно. Замер времени выполнения показал, что основное время занимает выполнение следующего запроса:

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

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

ИЗ

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

ГДЕ

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

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

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

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

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



Предложите вариант оптимизации запроса.
регистр продаж (дата1 и дата 2 и док = реализация)Если так поставить задачу... То может надо к оборотному регистру продажи обращаться (за период, а проведен не проверяем это и так есть) и группировка по номенклатуре? Должно быть гораздо быстрее.
...
Рейтинг: 0 / 0
Чем неоптимален данный запрос?
    #39024467
AHDP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
quot sevdo_tool,

Удивите их ответом, что добавление при оптимизации запроса .Наименование запрос притормозит, но сильно ускорит формирование печатной формы.
...
Рейтинг: 0 / 0
Чем неоптимален данный запрос?
    #39025232
javapecker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Программист 1сА в чем смысл разговора об запросе? Нам не важна производительность? Нам плевать какой мусор придет в sql? Поэтому разрешаем делать десять точек - ведь это просто левое соединение?

Или мы должны сделать так чтобы план запроса был оптимальным и sql не ошибался? Соответственно и запрос в 1с должен выглядеть по другому?
Поясняю - смысл в том что вы писали о том что точки плохи сами по себе, и предалгали заменить их левыми соединениями, делая вывод что это повлияет на план выполнения запроса. Но это не так, отсюда мой предыдущий вывод.
...
Рейтинг: 0 / 0
Чем неоптимален данный запрос?
    #39025300
Последний выдох ГПЖ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
самая мякоть в запросе - это неявный джоин ТЧ с шапкой документа с наложением условий на реквизиты шапки (т.е. сначала сджойнит все со всем, только потом уже начнет фильтровать из этого месива) + суммирование ради получения distinct
...
Рейтинг: 0 / 0
Чем неоптимален данный запрос?
    #39025334
Программист 1с
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
javapeckerПрограммист 1сА в чем смысл разговора об запросе? Нам не важна производительность? Нам плевать какой мусор придет в sql? Поэтому разрешаем делать десять точек - ведь это просто левое соединение?

Или мы должны сделать так чтобы план запроса был оптимальным и sql не ошибался? Соответственно и запрос в 1с должен выглядеть по другому?
Поясняю - смысл в том что вы писали о том что точки плохи сами по себе, и предалгали заменить их левыми соединениями, делая вывод что это повлияет на план выполнения запроса. Но это не так, отсюда мой предыдущий вывод.Угу. Тоесть конкретный пример с несколькими точками который увеличивал время работы в десятки раз, а после замены на простые блоки сильно ускорился является ошибкой? Надо оставлять запрос с многими точками. Такова Ваша позиция?
...
Рейтинг: 0 / 0
Чем неоптимален данный запрос?
    #39025365
javapecker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Программист 1сУгу. Тоесть конкретный пример с несколькими точками который увеличивал время работы в десятки раз, а после замены на простые блоки сильно ускорился является ошибкой? Надо оставлять запрос с многими точками. Такова Ваша позиция? Нет, не такая у меня позиция. У меня примерно такая - причины надо по возможности искать объективные, а не на основе предположений и догадок. Точки это не мистика, как они преобразуются в запросе - известно. Причиной тормозов с вашим запросом было то, что соединение, в которое преобразовывались точки - не подходило для вашего конкретного случая. Возможно из-за причины указанной выше - что соединения по точкам выполнялись раньше чем условия отбора в запросе. Но это не говорит о том что точки - зло.
В общем я за то, чтобы понимать причины по которым выполняются те или иные действия. А то может получиться как в этой притче:
АКТ ПЕРВЫЙ
В доме супружеской пары. Жена весь день занималась приготовлением замечательного окорока для своего мужа, первого в жизни - окорока, а не мужа...
Он (пробует). Превосходно. только зачем ты его обрезала?
Она. Так всегда делают, когда запекают окорок.
Он. Вовсе нет. Я много раз ел окорок, запеченный целиком.
Она. Наверно, если его обрезать, получается вкуснее.
Он. Что за чушь! Почему?
Она (неуверенно). Моя мама так готовила...
Он. Тогда пойдем к твоей маме.

АКТ ВТОРОЙ

В доме ее матери.
Она. Мама, как правильно запечь окорок?
М ать. Нужно замариновать его, обрезать и положить в печь.
Он а (мужу). Вот видишь?
Он. Сеньора, а зачем его нужно обрезать?
Мать (неуверенно). Ну, знаете... Маринады... Стряпня... Моя мать всегда так делала!
Он. Отлично, тогда идем к бабушке!

АКТ ТРЕТИЙ

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


ps Еще раз уточним - скидывать все в одну кучу и отправлять в sql это нормально? Потому что Вам точно известны все преобразования?
...
Рейтинг: 0 / 0
Чем неоптимален данный запрос?
    #39025755
javapecker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторТочки это не мистика, как они преобразуются в запросе - известно.
А в план запроса?
Программист 1с, вы занимаетесь софистикой. Я не утверждал что 10 точек это хорошо, нормально, или лушче, или хуже чем 10 левых соединений. Я утверждал что это одно и то же. А вы утверждали что точки ухудшают производительность запроса сами по себе, потому что так написано у 1С, и что можно судить о выполнении запроса с точками и без точек только изучая план запроса, котрый (уже не первый раз повторяю) здесь совершенно ни при чем, потому что точно известно как будет выглядеть запрос после преобразования точек в соединения. СУБД о существовании 1С не подозревает, ей все равно кто прислал запрос, и что с ним происходило до того как он к СУБД попал. Если тексты запросов с точками и без точек в итоге окажутся одинаковыми, то и план у них при прочих равных условиях будет одинаковый. Я даже не надеюсь что вы поверите на слово, поэтому просто проверьте любым доступным средством мониторинга запросов.
...
Рейтинг: 0 / 0
Чем неоптимален данный запрос?
    #39025850
Программист 1с
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
javapeckerавторТочки это не мистика, как они преобразуются в запросе - известно.
А в план запроса?
Программист 1с, вы занимаетесь софистикой. Я не утверждал что 10 точек это хорошо, нормально, или лушче, или хуже чем 10 левых соединений. Я утверждал что это одно и то же. А вы утверждали что точки ухудшают производительность запроса сами по себе, потому что так написано у 1С, и что можно судить о выполнении запроса с точками и без точек только изучая план запроса, котрый (уже не первый раз повторяю) здесь совершенно ни при чем, потому что точно известно как будет выглядеть запрос после преобразования точек в соединения. СУБД о существовании 1С не подозревает, ей все равно кто прислал запрос, и что с ним происходило до того как он к СУБД попал. Если тексты запросов с точками и без точек в итоге окажутся одинаковыми, то и план у них при прочих равных условиях будет одинаковый. Я даже не надеюсь что вы поверите на слово, поэтому просто проверьте любым доступным средством мониторинга запросов.Тоесть при 10 точках план запроса (и сам запрос) будет одинаков с планом запроса (и сам запрос) если его разбить на подзапросы естественно с левыми соединениями?

Вы всегда когда не хотите отвечать на прямые вопросы, начинаете придумывать оправдания (софистика и тд)?

ps 10 точек это плохо или хорошо? Или без разницы? или Ваш ответ софистика?
...
Рейтинг: 0 / 0
Чем неоптимален данный запрос?
    #39025869
javapecker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Программист 1с,Тоесть при 10 точках план запроса (и сам запрос) будет одинаков с планом запроса (и сам запрос) если его разбить на подзапросы естественно с левыми соединениями?
Вы всегда когда не хотите отвечать на прямые вопросы, начинаете придумывать оправдания (софистика и тд)?Вы очевидно не читаете что я пишу. Если ответа на свой вопрос вы не увидели, повторю еще раз. Да, тексты запросов с точками и левыми соединениями будут одинаковыми для СУБД, и план будет одинаковым при прочих равных условиях. Только откуда там взялись подзапросы, один запрос с левыми соединениями.
...
Рейтинг: 0 / 0
Чем неоптимален данный запрос?
    #39026257
Программист 1с
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
javapeckerПрограммист 1с,Тоесть при 10 точках план запроса (и сам запрос) будет одинаков с планом запроса (и сам запрос) если его разбить на подзапросы естественно с левыми соединениями?
Вы всегда когда не хотите отвечать на прямые вопросы, начинаете придумывать оправдания (софистика и тд)?Вы очевидно не читаете что я пишу. Если ответа на свой вопрос вы не увидели, повторю еще раз. Да, тексты запросов с точками и левыми соединениями будут одинаковыми для СУБД, и план будет одинаковым при прочих равных условиях. Только откуда там взялись подзапросы, один запрос с левыми соединениями.Еще раз уточняю - если вместо одного запроса с 10 точками сделать несколько пакетов запросов, то ничего не изменится? Не текст запроса, ни план запроса?

Также напишите сюда запрос и план запроса(можно в простейшем случае выдуманном вами) для файлового варианта. Раз ничего не меняется - у Вас это не вызовет проблем? Или Вы сразу скажете что не можете этого сделать?
...
Рейтинг: 0 / 0
Чем неоптимален данный запрос?
    #39026281
Zerro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
слепой с глухим общается . Программист 1с - "сделать несколько пакетов запросов" никто не говорил ни разу. Просто соединение с 10 таблицами.
...
Рейтинг: 0 / 0
Чем неоптимален данный запрос?
    #39026377
javapecker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Программист 1с, перестаньте пожалуйста вилять. Откуда взялся пакет запросов? Точки преобразуются в левые соединения. Все. больше ничего не происходит. 10 точек - десять соединений, в одном запросе. какая разница файловый вариант или серверный? речь идет о ТЕКСТЕ запроса, неважно кто потом будет обрабатывать этот текст, и следовательно план тоже не важен.
Также напишите сюда запрос и план запроса(можно в простейшем случае выдуманном вами) для файлового варианта. Раз ничего не меняется - у Вас это не вызовет проблем? Или Вы сразу скажете что не можете этого сделать? Я не буду этого делать потому что план запроса не является тезисом нашего спора. Тезис такой: точки преобразуются в левые соединения, независимо от их количества, и это легко проверить. С тем что тексты запросов с точками преобразутся в тексты запросов с левыми соединениями вы согласны? Если да, то для чего вы требуете сравнение планов ОДИНАКОВЫХ запросов?
...
Рейтинг: 0 / 0
Чем неоптимален данный запрос?
    #39026454
Программист 1с
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Zerroслепой с глухим общается . Программист 1с - "сделать несколько пакетов запросов" никто не говорил ни разу. Просто соединение с 10 таблицами.А Вы только один способ соединения знаете?
...
Рейтинг: 0 / 0
Чем неоптимален данный запрос?
    #39026463
Программист 1с
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
javapeckerПрограммист 1с, перестаньте пожалуйста вилять. Откуда взялся пакет запросов? Точки преобразуются в левые соединения. Все. больше ничего не происходит. 10 точек - десять соединений, в одном запросе. какая разница файловый вариант или серверный? речь идет о ТЕКСТЕ запроса, неважно кто потом будет обрабатывать этот текст, и следовательно план тоже не важен.
Также напишите сюда запрос и план запроса(можно в простейшем случае выдуманном вами) для файлового варианта. Раз ничего не меняется - у Вас это не вызовет проблем? Или Вы сразу скажете что не можете этого сделать? Я не буду этого делать потому что план запроса не является тезисом нашего спора. Тезис такой: точки преобразуются в левые соединения, независимо от их количества, и это легко проверить. С тем что тексты запросов с точками преобразутся в тексты запросов с левыми соединениями вы согласны? Если да, то для чего вы требуете сравнение планов ОДИНАКОВЫХ запросов?Вы не в курсе как оптимизируются запросы? Или Вы в серьез думали что я буду десять левых соединений с подсоединениями пихать в один запрос не используя пакеты?

А еще я про индексы не сказал. Вы это тоже не знаете?


И в 5 раз спросила золотая рыбка пытаясь получить ответ: Десять точек в одном запросе меняем на ГРАМОТНЫЙ запрос содержащий и пакеты и индексы (а можно и еще кое-что). В этом случае будет один и тот же запрос и план запроса, и скорость одинакова?
...
Рейтинг: 0 / 0
Чем неоптимален данный запрос?
    #39026497
javapecker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Программист 1с,
Вы не в курсе как оптимизируются запросы? Или Вы в серьез думали что я буду десять левых соединений с подсоединениями пихать в один запрос не используя пакеты?
Я в курсе как оптимизируются запросы. Вы себе льстите, я не утруждал себя размышлениями о том как вы будете оптимизировать запросы, поскольку меня это не интересует.
И в 5 раз спросила золотая рыбка пытаясь получить ответ: Десять точек в одном запросе меняем на ГРАМОТНЫЙ запрос содержащий и пакеты и индексы (а можно и еще кое-что). В этом случае будет один и тот же запрос и план запроса, и скорость одинакова?
Ну знаете, такого я просто от вас не ожидал. Так съезжать с темы на форуме где у людей по определению с логикой все в порядке - по меньшей мере странно. Вы на ходу придумываете новые условия. Если же вы (ну мало ли) искренне не понимаете чего я от вас хочу, напишу еще раз, мне не сложно. Я утверждаю, что 1С преобразует точки в левые соединения (вы как знаток множества левых соединений, можете выбрать любое из вам известных). Согласны ли вы с тем, что 1С (подчеркиваю, 1С - не вы) преобразует точки в левые соединения?
...
Рейтинг: 0 / 0
Чем неоптимален данный запрос?
    #39026498
Zerro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Программист 1сZerroслепой с глухим общается . Программист 1с - "сделать несколько пакетов запросов" никто не говорил ни разу. Просто соединение с 10 таблицами.А Вы только один способ соединения знаете?
четыле. больше в садике не учили. Давай только в крайности не бросаться - точки имеют право на существование .Не помню чтоб больше 3 точек вообще использовал. Если надо скорострельность - то лучше оптимизировать. Хеппи енд?
...
Рейтинг: 0 / 0
Чем неоптимален данный запрос?
    #39026570
Программист 1с
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ZerroПрограммист 1спропущено...
А Вы только один способ соединения знаете?
четыле. больше в садике не учили. Давай только в крайности не бросаться - точки имеют право на существование .Не помню чтоб больше 3 точек вообще использовал. Если надо скорострельность - то лучше оптимизировать. Хеппи енд?С Вашим мнением полностью согласен.
...
Рейтинг: 0 / 0
Чем неоптимален данный запрос?
    #39026574
Программист 1с
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
javapeckerНу знаете, такого я просто от вас не ожидал. Так съезжать с темы на форуме где у людей по определению с логикой все в порядке - по меньшей мере странно. Вы на ходу придумываете новые условия. Если же вы (ну мало ли) искренне не понимаете чего я от вас хочу, напишу еще раз, мне не сложно. Я утверждаю, что 1С преобразует точки в левые соединения (вы как знаток множества левых соединений, можете выбрать любое из вам известных). Согласны ли вы с тем, что 1С (подчеркиваю, 1С - не вы) преобразует точки в левые соединения?Вы не ответили на 5 вопрос золотой рыбки. А пытаетесь задать свои.

И в 6 раз спросила золотая рыбка пытаясь получить ответ: Десять точек в одном запросе меняем на ГРАМОТНЫЙ запрос содержащий и пакеты и индексы (а можно и еще кое-что). В этом случае будет один и тот же запрос и план запроса, и скорость одинакова?

ps Специально для Вас - отвечу на Ваш вопрос - да соединение скорее всего левое. Но я не был бы так самоуверен в ситуациях с небольшим количество элементов в соединяемом справочнике. Вполне возможно что е зависимости от версий и внутренней оптимизации 1с, ситуация может и поменяться.
...
Рейтинг: 0 / 0
Чем неоптимален данный запрос?
    #39026652
javapecker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Программист 1с,И в 6 раз спросила золотая рыбка пытаясь получить ответ: Десять точек в одном запросе меняем на ГРАМОТНЫЙ запрос содержащий и пакеты и индексы (а можно и еще кое-что). В этом случае будет один и тот же запрос и план запроса, и скорость одинакова? Разумеется не будет. Это очевидно, и с этим утверждением я не спорил.
...
Рейтинг: 0 / 0
Чем неоптимален данный запрос?
    #39026685
Программист 1с
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
javapeckerПрограммист 1с,И в 6 раз спросила золотая рыбка пытаясь получить ответ: Десять точек в одном запросе меняем на ГРАМОТНЫЙ запрос содержащий и пакеты и индексы (а можно и еще кое-что). В этом случае будет один и тот же запрос и план запроса, и скорость одинакова? Разумеется не будет. Это очевидно, и с этим утверждением я не спорил.Отсюда вывод что 10 точек это плохо и надо менять? Если да - то по-моему дискуссия окончена.
...
Рейтинг: 0 / 0
Чем неоптимален данный запрос?
    #39026689
javapecker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Программист 1с,Отсюда вывод что 10 точек это плохо и надо менять? Если да - то по-моему дискуссия окончена.
Это не дискуссия а горох об стену. И да, она окончена, я устал от вашей непроходимости. Устал повторять что меня не интересует ни количество точек, ни то, хорошо или плохо использовать их в таком количестве. Вам в бы в политику с таким подходом.
...
Рейтинг: 0 / 0
Чем неоптимален данный запрос?
    #39027491
sevdo_tool
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Итак, экзаменатор посмотрел мое решение перейти в запросе к обращению по регистрам и попросил оптимизировать первоначальный запрос , а не добавлять/изменять метаданные.

Немного погуглив, пришёл к выводу, что нужно использовать временные таблицы и соединения.
Для проверки создал пустую базу с простейшим документом Продажа, с ТЧ Товары со списком Номенклатуры. Чтобы использовать отбор по реквизитам документа для упрощения задачи создал числовой реквизит "Поле1". Зашёл в 1С Предприятие и создал 1 "тяжелый" документ с около 200 строк ТЧ (3 уникальных номенклатуры). Обработкой копированием создал около 1000 его копий, отличающихся реквизитом "Поле1":
заполнял в цикле
Код: sql
1.
Док.Поле1 = Ссылка.Поле1 + К*10

.
Таким образом получил около 1000 документов, у каждого по 200 строк ТЧ, отличающихся реквизитом "Поле1" для условия.

Далее используя консоль запросов Чистова с таймером выполнения запроса анализировал результаты (параметры &Нач = 3, &Кон = 9000).

Итак:

1) Оригинальный запрос (упростил под структуру моего док-та)

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
ВЫБРАТЬ
	ПродажаТовары.Номенклатура
ИЗ
	Документ.Продажа.Товары КАК ПродажаТовары
ГДЕ
	ПродажаТовары.Ссылка.Поле1 МЕЖДУ &Нач И &Кон

СГРУППИРОВАТЬ ПО
	ПродажаТовары.Номенклатура



Среднее время выполнения: ~2.067 сек

2) Запрос с использованием временной таблицы и внутренним соединением. Уникальность номенклатуры - ВЫБРАТЬ РАЗЛИЧНЫЕ

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
ВЫБРАТЬ
	Продажа.Ссылка КАК Ссылка
ПОМЕСТИТЬ ВрТаб
ИЗ
	Документ.Продажа КАК Продажа
ГДЕ
	Продажа.Поле1 МЕЖДУ &Нач И &Кон

ИНДЕКСИРОВАТЬ ПО
	Ссылка
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ РАЗЛИЧНЫЕ
	ПродажаТовары.Номенклатура
ИЗ
	Документ.Продажа.Товары КАК ПродажаТовары
		ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВрТаб КАК ВрТаб
		ПО (ВрТаб.Ссылка = ПродажаТовары.Ссылка)



Среднее время выполнения: ~0.160 сек

3) Запрос с использованием временной таблицы и внутренним соединением. Уникальность номенклатуры - СГРУППИРОВАТЬ ПО

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
ВЫБРАТЬ
	Продажа.Ссылка КАК Ссылка
ПОМЕСТИТЬ ВрТаб
ИЗ
	Документ.Продажа КАК Продажа
ГДЕ
	Продажа.Поле1 МЕЖДУ &Нач И &Кон

ИНДЕКСИРОВАТЬ ПО
	Ссылка
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
	ПродажаТовары.Номенклатура
ИЗ
	ВрТаб КАК ВрТаб
		ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.Продажа.Товары КАК ПродажаТовары
		ПО ВрТаб.Ссылка = ПродажаТовары.Ссылка

СГРУППИРОВАТЬ ПО
	ПродажаТовары.Номенклатура



Среднее время выполнения: ~0.120 сек


ВЫВОДЫ:

Использование временной таблицы и внутреннего соединения позволило значительно сократить время выполнения. При этом "ВЫБРАТЬ РАЗЛИЧНЫЕ..." никакого выйгрыша по сравнению с "СГРУППИРОВАТЬ ПО..." не дало, а даже наоборот.
...
Рейтинг: 0 / 0
Чем неоптимален данный запрос?
    #39027570
andr_andrey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sevdo_tool,

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


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