|
Чем неоптимален данный запрос?
|
|||
---|---|---|---|
#18+
Программист 1с, Этого аргумент на экзамене? Основные причины неоптимальной работы запросов, диагностируемые на уровне кода конфигурации и структуры метаданных: соединения с подзапросами; соединения с виртуальными таблицами; несоответствие индексов и условий запроса; использование логического ИЛИ в условиях; использование подзапросов в условии соединения; получение данных через точку от полей составного типа; фильтрация виртуальных таблиц без использования параметров. P.S. Подчеркну, что в шестым упомянуто разыменовывание полей только СОСТАВНОГО типа. P.P.S. Допускаю, что автор отсортировал не по неоптимальности, а по длине наименования (для лучшего визуального восприятия). ... |
|||
:
Нравится:
Не нравится:
|
|||
04.08.2015, 11:51 |
|
Чем неоптимален данный запрос?
|
|||
---|---|---|---|
#18+
ZerroГоворил что одна точка это не плохо и заворачиваться ради оптимизации не стоитПрограммист 1сpsps 2 точки и больше - нежелательно применять в запросах.Может всетаки 2? (А на самом деле при 3 точках как раз и наблюдал падение скорости запроса в десятки раз) А автору дал ответ исходя из рекомендаций курсов 1с, где скорее всего ему и дали такую задачу. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.08.2015, 11:54 |
|
Чем неоптимален данный запрос?
|
|||
---|---|---|---|
#18+
AHDP, ты сам заметишь слово в цитате (и оно отличается от слова "все")? https://its.1c.ru/db/metod8dev#content:5842:hdoc AHDPТипичные причины неоптимальной работы запросов и методы оптимизации.Будешь спорить что куча точек для несоставного типа, не является причиной неоптимальной работы запроса? ps Визуально согласен, естественно выглядит лучше. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.08.2015, 12:19 |
|
Чем неоптимален данный запрос?
|
|||
---|---|---|---|
#18+
Профайлер доступен только для клиент-серверного варианта работы насколько я понимаю? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.08.2015, 16:10 |
|
Чем неоптимален данный запрос?
|
|||
---|---|---|---|
#18+
sevdo_toolПрофайлер доступен только для клиент-серверного варианта работы насколько я понимаю? профайлер в постгри тоже недоступен за наличием отсутствия пропитанных шпал! ... |
|||
:
Нравится:
Не нравится:
|
|||
04.08.2015, 17:13 |
|
Чем неоптимален данный запрос?
|
|||
---|---|---|---|
#18+
Программист 1с , Спрашивал ссылку - я её предоставил , дабы пресечь срач и взаимные оскорбления. А по теме неоптимальности запроса только два однозначных замечания : 1) уточнить, для чего будут использоваться его результаты и, очень вероятно, что надо будет получать не ссылку , а наименование номенклатуры . Мы же не хотим получить на каждую строку неявный запрос к БД при выводе отчета ; 2) заменить группировку на Различные . Остальные рекомендации обсуждать некорректно, т.к. они зависят не только от данных в БД , но и от параметров запроса . Согласен с Shuhard , что документами пользоваться не стоит, но не согласен с приведенной аргументацией. С точки зрения пользователя операция продажи может быть отображена и другим видом документов (корректировка, возврат...). И даже если пользователь просит показать ему только реализацию, то неплохо ему подсказать , что нужно смотреть и иные данные. С точки зрения программиста - записи в регистре уже удовлетворяют одному условию (не нужно проверять просвещённость) и можно надеяться на попадание в индекс большего числа необходимых полей. В идеале запрос сведется к сканированию индекса регистра и чтению из 2х таблиц (договоры, номенклатура), против сканирования индекса таблицы договоры с последующим чтением из неё и чтением из 3х таблиц (товары, договоры, номенклатура). Итого выкинули одно условие и одну таблицу . Программист 1с , 1С не поддерживает хинты (мы же за MS SQL говорим), по этому оптимизатор будет в любом случае разгребать запрос, как бы он не был заковыристо написан. autsaider , если будет индекс Проведен, Дата, Договор - то . Но за индексацию "лишних" данных надо карать не менее строго, чем за кривые запросы. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.08.2015, 08:37 |
|
Чем неоптимален данный запрос?
|
|||
---|---|---|---|
#18+
AHDP 1С не поддерживает хинты поддерживает как минимум два nolock и updlock ... |
|||
:
Нравится:
Не нравится:
|
|||
05.08.2015, 10:01 |
|
Чем неоптимален данный запрос?
|
|||
---|---|---|---|
#18+
Последний выдох ГПЖ , Уточнение принимается, но к обсуждаемой теме не относиться. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.08.2015, 12:27 |
|
Чем неоптимален данный запрос?
|
|||
---|---|---|---|
#18+
AHDPУточнение принимается, но к обсуждаемой теме не относиться. имхо тема сдохла давно ... |
|||
:
Нравится:
Не нравится:
|
|||
05.08.2015, 12:51 |
|
Чем неоптимален данный запрос?
|
|||
---|---|---|---|
#18+
AHDP, я в отпуск уезжаю. Потом поспорим ... |
|||
:
Нравится:
Не нравится:
|
|||
05.08.2015, 22:04 |
|
Чем неоптимален данный запрос?
|
|||
---|---|---|---|
#18+
Программист 1с, мне кажется вы путаете текст запроса и план запроса. если с планом могут быть вопросы, то сам запрос, который придет в субд от 1с после преобразования в SQL - выглядит совершенно определенно, и это легко проверяется. Как уже сказали, точка для несоставных полей это просто левое соединение. и никакой разницы, сами вы это соединение опишете, или положитесь на запрос через точку - просто не существует. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.08.2015, 23:06 |
|
Чем неоптимален данный запрос?
|
|||
---|---|---|---|
#18+
автор AHDPА по теме неоптимальности запроса только два однозначных замечания: 1) уточнить, для чего будут использоваться его результаты Вообще эта задачку мне дали на проверку как тест: Оптимизация запроса В «1С:Управление торговлей» была реализована выгрузка списка проданных товаров во внешнюю сиситему. Со временем в базе было накоплено большое количество данных и выгрузка стала работать медленно. Замер времени выполнения показал, что основное время занимает выполнение следующего запроса: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19.
Предложите вариант оптимизации запроса. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2015, 08:51 |
|
Чем неоптимален данный запрос?
|
|||
---|---|---|---|
#18+
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 и док = реализация) ... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2015, 08:56 |
|
Чем неоптимален данный запрос?
|
|||
---|---|---|---|
#18+
>Реализация.Ссылка.Проведен >И Реализация.Ссылка.Дата МЕЖДУ &ДатаНач И &ДатаОкон стоит поменять местами - будет попадание в индекс [ОРРХ | ОРНР1 +] Дата + Ссылка ... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2015, 10:00 |
|
Чем неоптимален данный запрос?
|
|||
---|---|---|---|
#18+
Последний выдох ГПЖстоит поменять местами - будет попадание в индекс [ОРРХ | ОРНР1 +] Дата + Ссылка Об этом поподробнее, пожалуйста. Неужели порядок следования в условии ГДЕ на что-то влияет? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2015, 11:50 |
|
Чем неоптимален данный запрос?
|
|||
---|---|---|---|
#18+
sevdo_toolПоследний выдох ГПЖстоит поменять местами - будет попадание в индекс [ОРРХ | ОРНР1 +] Дата + Ссылка Об этом поподробнее, пожалуйста. Неужели порядок следования в условии ГДЕ на что-то влияет? не тут наверное наврал - коллега говорит что порядок в где не важен оптимизатор сам определит как лучше зацепиться за индекс ... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2015, 12:19 |
|
Чем неоптимален данный запрос?
|
|||
---|---|---|---|
#18+
javapeckerПрограммист 1с, мне кажется вы путаете текст запроса и план запроса. если с планом могут быть вопросы, то сам запрос, который придет в субд от 1с после преобразования в SQL - выглядит совершенно определенно, и это легко проверяется. Как уже сказали, точка для несоставных полей это просто левое соединение. и никакой разницы, сами вы это соединение опишете, или положитесь на запрос через точку - просто не существует.А в чем смысл разговора об запросе? Нам не важна производительность? Нам плевать какой мусор придет в sql? Поэтому разрешаем делать десять точек - ведь это просто левое соединение? Или мы должны сделать так чтобы план запроса был оптимальным и sql не ошибался? Соответственно и запрос в 1с должен выглядеть по другому? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2015, 14:21 |
|
Чем неоптимален данный запрос?
|
|||
---|---|---|---|
#18+
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 и док = реализация)Если так поставить задачу... То может надо к оборотному регистру продажи обращаться (за период, а проведен не проверяем это и так есть) и группировка по номенклатуре? Должно быть гораздо быстрее. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2015, 14:23 |
|
Чем неоптимален данный запрос?
|
|||
---|---|---|---|
#18+
quot sevdo_tool, Удивите их ответом, что добавление при оптимизации запроса .Наименование запрос притормозит, но сильно ускорит формирование печатной формы. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2015, 16:11 |
|
Чем неоптимален данный запрос?
|
|||
---|---|---|---|
#18+
Программист 1сА в чем смысл разговора об запросе? Нам не важна производительность? Нам плевать какой мусор придет в sql? Поэтому разрешаем делать десять точек - ведь это просто левое соединение? Или мы должны сделать так чтобы план запроса был оптимальным и sql не ошибался? Соответственно и запрос в 1с должен выглядеть по другому? Поясняю - смысл в том что вы писали о том что точки плохи сами по себе, и предалгали заменить их левыми соединениями, делая вывод что это повлияет на план выполнения запроса. Но это не так, отсюда мой предыдущий вывод. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.08.2015, 16:46 |
|
Чем неоптимален данный запрос?
|
|||
---|---|---|---|
#18+
самая мякоть в запросе - это неявный джоин ТЧ с шапкой документа с наложением условий на реквизиты шапки (т.е. сначала сджойнит все со всем, только потом уже начнет фильтровать из этого месива) + суммирование ради получения distinct ... |
|||
:
Нравится:
Не нравится:
|
|||
07.08.2015, 18:29 |
|
Чем неоптимален данный запрос?
|
|||
---|---|---|---|
#18+
javapeckerПрограммист 1сА в чем смысл разговора об запросе? Нам не важна производительность? Нам плевать какой мусор придет в sql? Поэтому разрешаем делать десять точек - ведь это просто левое соединение? Или мы должны сделать так чтобы план запроса был оптимальным и sql не ошибался? Соответственно и запрос в 1с должен выглядеть по другому? Поясняю - смысл в том что вы писали о том что точки плохи сами по себе, и предалгали заменить их левыми соединениями, делая вывод что это повлияет на план выполнения запроса. Но это не так, отсюда мой предыдущий вывод.Угу. Тоесть конкретный пример с несколькими точками который увеличивал время работы в десятки раз, а после замены на простые блоки сильно ускорился является ошибкой? Надо оставлять запрос с многими точками. Такова Ваша позиция? ... |
|||
:
Нравится:
Не нравится:
|
|||
07.08.2015, 19:45 |
|
Чем неоптимален данный запрос?
|
|||
---|---|---|---|
#18+
Программист 1сУгу. Тоесть конкретный пример с несколькими точками который увеличивал время работы в десятки раз, а после замены на простые блоки сильно ускорился является ошибкой? Надо оставлять запрос с многими точками. Такова Ваша позиция? Нет, не такая у меня позиция. У меня примерно такая - причины надо по возможности искать объективные, а не на основе предположений и догадок. Точки это не мистика, как они преобразуются в запросе - известно. Причиной тормозов с вашим запросом было то, что соединение, в которое преобразовывались точки - не подходило для вашего конкретного случая. Возможно из-за причины указанной выше - что соединения по точкам выполнялись раньше чем условия отбора в запросе. Но это не говорит о том что точки - зло. В общем я за то, чтобы понимать причины по которым выполняются те или иные действия. А то может получиться как в этой притче: АКТ ПЕРВЫЙ В доме супружеской пары. Жена весь день занималась приготовлением замечательного окорока для своего мужа, первого в жизни - окорока, а не мужа... Он (пробует). Превосходно. только зачем ты его обрезала? Она. Так всегда делают, когда запекают окорок. Он. Вовсе нет. Я много раз ел окорок, запеченный целиком. Она. Наверно, если его обрезать, получается вкуснее. Он. Что за чушь! Почему? Она (неуверенно). Моя мама так готовила... Он. Тогда пойдем к твоей маме. АКТ ВТОРОЙ В доме ее матери. Она. Мама, как правильно запечь окорок? М ать. Нужно замариновать его, обрезать и положить в печь. Он а (мужу). Вот видишь? Он. Сеньора, а зачем его нужно обрезать? Мать (неуверенно). Ну, знаете... Маринады... Стряпня... Моя мать всегда так делала! Он. Отлично, тогда идем к бабушке! АКТ ТРЕТИЙ В доме ее бабушки. Она. Бабуля, как правильно готовить запеченный окорок? Бабушка. Сначала я его как следует мариную, даю постоять часа три, потом обрезаю и кладу в печь. М ать (зятю). Вот видишь! Она (мужу). Вот видишь! Он (совершенно сбитый с толку). Позвольте, бабушка, но зачем же его обрезать? Бабушка. Боже милостивый, да затем, чтоб окорок в печи поместился. У меня печка такая тесная... ... |
|||
:
Нравится:
Не нравится:
|
|||
07.08.2015, 21:29 |
|
Чем неоптимален данный запрос?
|
|||
---|---|---|---|
#18+
javapeckerНо это не говорит о том что точки - зло.Итак вернулись к началу. 10 точек подряд не является злом. Это нормально?javapeckerТочки это не мистика, как они преобразуются в запросе - известно.А в план запроса? ps Еще раз уточним - скидывать все в одну кучу и отправлять в sql это нормально? Потому что Вам точно известны все преобразования? ... |
|||
:
Нравится:
Не нравится:
|
|||
07.08.2015, 23:29 |
|
Чем неоптимален данный запрос?
|
|||
---|---|---|---|
#18+
авторТочки это не мистика, как они преобразуются в запросе - известно. А в план запроса? Программист 1с, вы занимаетесь софистикой. Я не утверждал что 10 точек это хорошо, нормально, или лушче, или хуже чем 10 левых соединений. Я утверждал что это одно и то же. А вы утверждали что точки ухудшают производительность запроса сами по себе, потому что так написано у 1С, и что можно судить о выполнении запроса с точками и без точек только изучая план запроса, котрый (уже не первый раз повторяю) здесь совершенно ни при чем, потому что точно известно как будет выглядеть запрос после преобразования точек в соединения. СУБД о существовании 1С не подозревает, ей все равно кто прислал запрос, и что с ним происходило до того как он к СУБД попал. Если тексты запросов с точками и без точек в итоге окажутся одинаковыми, то и план у них при прочих равных условиях будет одинаковый. Я даже не надеюсь что вы поверите на слово, поэтому просто проверьте любым доступным средством мониторинга запросов. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.08.2015, 16:58 |
|
|
start [/forum/topic.php?fid=28&msg=39025334&tid=1519024]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
60ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
62ms |
get tp. blocked users: |
2ms |
others: | 13ms |
total: | 181ms |
0 / 0 |