powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / [игнор отключен] [закрыт для гостей] / Чем неоптимален данный запрос?
16 сообщений из 66, страница 3 из 3
Чем неоптимален данный запрос?
    #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
16 сообщений из 66, страница 3 из 3
Форумы / [игнор отключен] [закрыт для гостей] / Чем неоптимален данный запрос?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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