|
Чем неоптимален данный запрос?
|
|||
---|---|---|---|
#18+
javapeckerавторТочки это не мистика, как они преобразуются в запросе - известно. А в план запроса? Программист 1с, вы занимаетесь софистикой. Я не утверждал что 10 точек это хорошо, нормально, или лушче, или хуже чем 10 левых соединений. Я утверждал что это одно и то же. А вы утверждали что точки ухудшают производительность запроса сами по себе, потому что так написано у 1С, и что можно судить о выполнении запроса с точками и без точек только изучая план запроса, котрый (уже не первый раз повторяю) здесь совершенно ни при чем, потому что точно известно как будет выглядеть запрос после преобразования точек в соединения. СУБД о существовании 1С не подозревает, ей все равно кто прислал запрос, и что с ним происходило до того как он к СУБД попал. Если тексты запросов с точками и без точек в итоге окажутся одинаковыми, то и план у них при прочих равных условиях будет одинаковый. Я даже не надеюсь что вы поверите на слово, поэтому просто проверьте любым доступным средством мониторинга запросов.Тоесть при 10 точках план запроса (и сам запрос) будет одинаков с планом запроса (и сам запрос) если его разбить на подзапросы естественно с левыми соединениями? Вы всегда когда не хотите отвечать на прямые вопросы, начинаете придумывать оправдания (софистика и тд)? ps 10 точек это плохо или хорошо? Или без разницы? или Ваш ответ софистика? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.08.2015, 22:59 |
|
Чем неоптимален данный запрос?
|
|||
---|---|---|---|
#18+
Программист 1с,Тоесть при 10 точках план запроса (и сам запрос) будет одинаков с планом запроса (и сам запрос) если его разбить на подзапросы естественно с левыми соединениями? Вы всегда когда не хотите отвечать на прямые вопросы, начинаете придумывать оправдания (софистика и тд)?Вы очевидно не читаете что я пишу. Если ответа на свой вопрос вы не увидели, повторю еще раз. Да, тексты запросов с точками и левыми соединениями будут одинаковыми для СУБД, и план будет одинаковым при прочих равных условиях. Только откуда там взялись подзапросы, один запрос с левыми соединениями. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.08.2015, 00:01 |
|
Чем неоптимален данный запрос?
|
|||
---|---|---|---|
#18+
javapeckerПрограммист 1с,Тоесть при 10 точках план запроса (и сам запрос) будет одинаков с планом запроса (и сам запрос) если его разбить на подзапросы естественно с левыми соединениями? Вы всегда когда не хотите отвечать на прямые вопросы, начинаете придумывать оправдания (софистика и тд)?Вы очевидно не читаете что я пишу. Если ответа на свой вопрос вы не увидели, повторю еще раз. Да, тексты запросов с точками и левыми соединениями будут одинаковыми для СУБД, и план будет одинаковым при прочих равных условиях. Только откуда там взялись подзапросы, один запрос с левыми соединениями.Еще раз уточняю - если вместо одного запроса с 10 точками сделать несколько пакетов запросов, то ничего не изменится? Не текст запроса, ни план запроса? Также напишите сюда запрос и план запроса(можно в простейшем случае выдуманном вами) для файлового варианта. Раз ничего не меняется - у Вас это не вызовет проблем? Или Вы сразу скажете что не можете этого сделать? ... |
|||
:
Нравится:
Не нравится:
|
|||
10.08.2015, 13:40 |
|
Чем неоптимален данный запрос?
|
|||
---|---|---|---|
#18+
слепой с глухим общается . Программист 1с - "сделать несколько пакетов запросов" никто не говорил ни разу. Просто соединение с 10 таблицами. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.08.2015, 14:04 |
|
Чем неоптимален данный запрос?
|
|||
---|---|---|---|
#18+
Программист 1с, перестаньте пожалуйста вилять. Откуда взялся пакет запросов? Точки преобразуются в левые соединения. Все. больше ничего не происходит. 10 точек - десять соединений, в одном запросе. какая разница файловый вариант или серверный? речь идет о ТЕКСТЕ запроса, неважно кто потом будет обрабатывать этот текст, и следовательно план тоже не важен. Также напишите сюда запрос и план запроса(можно в простейшем случае выдуманном вами) для файлового варианта. Раз ничего не меняется - у Вас это не вызовет проблем? Или Вы сразу скажете что не можете этого сделать? Я не буду этого делать потому что план запроса не является тезисом нашего спора. Тезис такой: точки преобразуются в левые соединения, независимо от их количества, и это легко проверить. С тем что тексты запросов с точками преобразутся в тексты запросов с левыми соединениями вы согласны? Если да, то для чего вы требуете сравнение планов ОДИНАКОВЫХ запросов? ... |
|||
:
Нравится:
Не нравится:
|
|||
10.08.2015, 15:07 |
|
Чем неоптимален данный запрос?
|
|||
---|---|---|---|
#18+
Zerroслепой с глухим общается . Программист 1с - "сделать несколько пакетов запросов" никто не говорил ни разу. Просто соединение с 10 таблицами.А Вы только один способ соединения знаете? ... |
|||
:
Нравится:
Не нравится:
|
|||
10.08.2015, 16:18 |
|
Чем неоптимален данный запрос?
|
|||
---|---|---|---|
#18+
javapeckerПрограммист 1с, перестаньте пожалуйста вилять. Откуда взялся пакет запросов? Точки преобразуются в левые соединения. Все. больше ничего не происходит. 10 точек - десять соединений, в одном запросе. какая разница файловый вариант или серверный? речь идет о ТЕКСТЕ запроса, неважно кто потом будет обрабатывать этот текст, и следовательно план тоже не важен. Также напишите сюда запрос и план запроса(можно в простейшем случае выдуманном вами) для файлового варианта. Раз ничего не меняется - у Вас это не вызовет проблем? Или Вы сразу скажете что не можете этого сделать? Я не буду этого делать потому что план запроса не является тезисом нашего спора. Тезис такой: точки преобразуются в левые соединения, независимо от их количества, и это легко проверить. С тем что тексты запросов с точками преобразутся в тексты запросов с левыми соединениями вы согласны? Если да, то для чего вы требуете сравнение планов ОДИНАКОВЫХ запросов?Вы не в курсе как оптимизируются запросы? Или Вы в серьез думали что я буду десять левых соединений с подсоединениями пихать в один запрос не используя пакеты? А еще я про индексы не сказал. Вы это тоже не знаете? И в 5 раз спросила золотая рыбка пытаясь получить ответ: Десять точек в одном запросе меняем на ГРАМОТНЫЙ запрос содержащий и пакеты и индексы (а можно и еще кое-что). В этом случае будет один и тот же запрос и план запроса, и скорость одинакова? ... |
|||
:
Нравится:
Не нравится:
|
|||
10.08.2015, 16:23 |
|
Чем неоптимален данный запрос?
|
|||
---|---|---|---|
#18+
Программист 1с, Вы не в курсе как оптимизируются запросы? Или Вы в серьез думали что я буду десять левых соединений с подсоединениями пихать в один запрос не используя пакеты? Я в курсе как оптимизируются запросы. Вы себе льстите, я не утруждал себя размышлениями о том как вы будете оптимизировать запросы, поскольку меня это не интересует. И в 5 раз спросила золотая рыбка пытаясь получить ответ: Десять точек в одном запросе меняем на ГРАМОТНЫЙ запрос содержащий и пакеты и индексы (а можно и еще кое-что). В этом случае будет один и тот же запрос и план запроса, и скорость одинакова? Ну знаете, такого я просто от вас не ожидал. Так съезжать с темы на форуме где у людей по определению с логикой все в порядке - по меньшей мере странно. Вы на ходу придумываете новые условия. Если же вы (ну мало ли) искренне не понимаете чего я от вас хочу, напишу еще раз, мне не сложно. Я утверждаю, что 1С преобразует точки в левые соединения (вы как знаток множества левых соединений, можете выбрать любое из вам известных). Согласны ли вы с тем, что 1С (подчеркиваю, 1С - не вы) преобразует точки в левые соединения? ... |
|||
:
Нравится:
Не нравится:
|
|||
10.08.2015, 16:52 |
|
Чем неоптимален данный запрос?
|
|||
---|---|---|---|
#18+
Программист 1сZerroслепой с глухим общается . Программист 1с - "сделать несколько пакетов запросов" никто не говорил ни разу. Просто соединение с 10 таблицами.А Вы только один способ соединения знаете? четыле. больше в садике не учили. Давай только в крайности не бросаться - точки имеют право на существование .Не помню чтоб больше 3 точек вообще использовал. Если надо скорострельность - то лучше оптимизировать. Хеппи енд? ... |
|||
:
Нравится:
Не нравится:
|
|||
10.08.2015, 16:53 |
|
Чем неоптимален данный запрос?
|
|||
---|---|---|---|
#18+
ZerroПрограммист 1спропущено... А Вы только один способ соединения знаете? четыле. больше в садике не учили. Давай только в крайности не бросаться - точки имеют право на существование .Не помню чтоб больше 3 точек вообще использовал. Если надо скорострельность - то лучше оптимизировать. Хеппи енд?С Вашим мнением полностью согласен. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.08.2015, 18:30 |
|
Чем неоптимален данный запрос?
|
|||
---|---|---|---|
#18+
javapeckerНу знаете, такого я просто от вас не ожидал. Так съезжать с темы на форуме где у людей по определению с логикой все в порядке - по меньшей мере странно. Вы на ходу придумываете новые условия. Если же вы (ну мало ли) искренне не понимаете чего я от вас хочу, напишу еще раз, мне не сложно. Я утверждаю, что 1С преобразует точки в левые соединения (вы как знаток множества левых соединений, можете выбрать любое из вам известных). Согласны ли вы с тем, что 1С (подчеркиваю, 1С - не вы) преобразует точки в левые соединения?Вы не ответили на 5 вопрос золотой рыбки. А пытаетесь задать свои. И в 6 раз спросила золотая рыбка пытаясь получить ответ: Десять точек в одном запросе меняем на ГРАМОТНЫЙ запрос содержащий и пакеты и индексы (а можно и еще кое-что). В этом случае будет один и тот же запрос и план запроса, и скорость одинакова? ps Специально для Вас - отвечу на Ваш вопрос - да соединение скорее всего левое. Но я не был бы так самоуверен в ситуациях с небольшим количество элементов в соединяемом справочнике. Вполне возможно что е зависимости от версий и внутренней оптимизации 1с, ситуация может и поменяться. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.08.2015, 18:36 |
|
Чем неоптимален данный запрос?
|
|||
---|---|---|---|
#18+
Программист 1с,И в 6 раз спросила золотая рыбка пытаясь получить ответ: Десять точек в одном запросе меняем на ГРАМОТНЫЙ запрос содержащий и пакеты и индексы (а можно и еще кое-что). В этом случае будет один и тот же запрос и план запроса, и скорость одинакова? Разумеется не будет. Это очевидно, и с этим утверждением я не спорил. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.08.2015, 20:52 |
|
Чем неоптимален данный запрос?
|
|||
---|---|---|---|
#18+
javapeckerПрограммист 1с,И в 6 раз спросила золотая рыбка пытаясь получить ответ: Десять точек в одном запросе меняем на ГРАМОТНЫЙ запрос содержащий и пакеты и индексы (а можно и еще кое-что). В этом случае будет один и тот же запрос и план запроса, и скорость одинакова? Разумеется не будет. Это очевидно, и с этим утверждением я не спорил.Отсюда вывод что 10 точек это плохо и надо менять? Если да - то по-моему дискуссия окончена. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.08.2015, 23:08 |
|
Чем неоптимален данный запрос?
|
|||
---|---|---|---|
#18+
Программист 1с,Отсюда вывод что 10 точек это плохо и надо менять? Если да - то по-моему дискуссия окончена. Это не дискуссия а горох об стену. И да, она окончена, я устал от вашей непроходимости. Устал повторять что меня не интересует ни количество точек, ни то, хорошо или плохо использовать их в таком количестве. Вам в бы в политику с таким подходом. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.08.2015, 23:32 |
|
Чем неоптимален данный запрос?
|
|||
---|---|---|---|
#18+
Итак, экзаменатор посмотрел мое решение перейти в запросе к обращению по регистрам и попросил оптимизировать первоначальный запрос , а не добавлять/изменять метаданные. Немного погуглив, пришёл к выводу, что нужно использовать временные таблицы и соединения. Для проверки создал пустую базу с простейшим документом Продажа, с ТЧ Товары со списком Номенклатуры. Чтобы использовать отбор по реквизитам документа для упрощения задачи создал числовой реквизит "Поле1". Зашёл в 1С Предприятие и создал 1 "тяжелый" документ с около 200 строк ТЧ (3 уникальных номенклатуры). Обработкой копированием создал около 1000 его копий, отличающихся реквизитом "Поле1": заполнял в цикле Код: sql 1.
. Таким образом получил около 1000 документов, у каждого по 200 строк ТЧ, отличающихся реквизитом "Поле1" для условия. Далее используя консоль запросов Чистова с таймером выполнения запроса анализировал результаты (параметры &Нач = 3, &Кон = 9000). Итак: 1) Оригинальный запрос (упростил под структуру моего док-та) Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9.
Среднее время выполнения: ~2.067 сек 2) Запрос с использованием временной таблицы и внутренним соединением. Уникальность номенклатуры - ВЫБРАТЬ РАЗЛИЧНЫЕ Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19.
Среднее время выполнения: ~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.
Среднее время выполнения: ~0.120 сек ВЫВОДЫ: Использование временной таблицы и внутреннего соединения позволило значительно сократить время выполнения. При этом "ВЫБРАТЬ РАЗЛИЧНЫЕ..." никакого выйгрыша по сравнению с "СГРУППИРОВАТЬ ПО..." не дало, а даже наоборот. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.08.2015, 22:55 |
|
Чем неоптимален данный запрос?
|
|||
---|---|---|---|
#18+
sevdo_tool, о том, что не стоит соединять множества всей номенклатуры продаж с документами продаж из диапазона вам намекали на первой странице. Спасибо, что отписали результат проверки и прекратили "беспощадный бой оптимизаторов". ... |
|||
:
Нравится:
Не нравится:
|
|||
12.08.2015, 09:11 |
|
|
start [/forum/topic.php?fid=28&gotonew=1&tid=1519024]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
64ms |
get topic data: |
11ms |
get first new msg: |
8ms |
get forum data: |
2ms |
get page messages: |
53ms |
get tp. blocked users: |
1ms |
others: | 13ms |
total: | 182ms |
0 / 0 |