|   |   | 
| 
 | Оптимизация запроса 1С | ☑ | ||
|---|---|---|---|---|
| 0
    
        bfss-732 06.03.21✎ 14:25 | 
        Привет!
 Как можно оптимизировать? ВЫБРАТЬ РАЗРЕШЕННЫЕ | ТаблицаТоваров.Ссылка КАК СчетФактура, | ТаблицаТоваров.СтранаПроисхождения.Код КАК СтранаПроисхождения, | ТаблицаТоваров.НомерГТД, | СУММА(1) КАК КоличествоЭлементов |ИЗ | Документ.ПоступлениеТоваровУслуг.Товары КАК ТаблицаТоваров |ГДЕ | ТаблицаТоваров.Ссылка В(&СписокСФ) | |СГРУППИРОВАТЬ ПО | ТаблицаТоваров.Ссылка, | ТаблицаТоваров.СтранаПроисхождения, | ТаблицаТоваров.НомерГТД, | ТаблицаТоваров.СтранаПроисхождения.Код | |ОБЪЕДИНИТЬ ВСЕ | |ВЫБРАТЬ | ТаблицаТоваров.Ссылка, | ТаблицаТоваров.СтранаПроисхождения.Код, | ТаблицаТоваров.НомерГТД, | СУММА(1) |ИЗ | Документ.ПоступлениеТоваровУслуг.Оборудование КАК ТаблицаТоваров |ГДЕ | ТаблицаТоваров.Ссылка В(&СписокСФ) | |СГРУППИРОВАТЬ ПО | ТаблицаТоваров.Ссылка, | ТаблицаТоваров.СтранаПроисхождения, | ТаблицаТоваров.НомерГТД, | ТаблицаТоваров.СтранаПроисхождения.Код | |||
| 1
    
        nicxxx 06.03.21✎ 14:31 | 
        Нечего тут оптимизировать.
 Надо группировку оставить одну и применить ее к юниону. А то дубли строк могут появиться. | |||
| 2
    
        timurhv 06.03.21✎ 14:35 | 
        (0) больше 128 элементов в СписокСФ?     | |||
| 3
    
        vde69 06.03.21✎ 14:43 | 
        переделать на запрос к регистру
 зы запросы к документам как правило это плохо | |||
| 4
    
        bfss-732 06.03.21✎ 14:45 | 
        (1) это как? Что за юнион?     | |||
| 5
    
        DAFA 06.03.21✎ 14:49 | 
        ИНДЕКСИРОВАТЬ ПО     | |||
| 6
    
        nicxxx 06.03.21✎ 14:55 | 
        (5) что там индексировать ты собрался? чтобы замедлить запрос если только?     | |||
| 7
    
        timurhv 06.03.21✎ 14:55 | 
        (5) так по полю Ссылка табличной части изначально должен быть кластерный индекс, зачем его дополнительно индексировать?     | |||
| 8
    
        RomanYS 06.03.21✎ 14:56 | 
        (4) Сначала объединить без группировки и ".Код"( это неявное соединение) во временную таблицу, а потом уже группировать и .Код из временной     | |||
| 9
    
        DAFA 06.03.21✎ 15:04 | 
        (6) для чего поля индексируют? ты вообще оптимизацией занимался ? ранее     | |||
| 10
    
        DAFA 06.03.21✎ 15:05 | 
        (7) про ссылку речи не было     | |||
| 11
    
        ДенисЧ 06.03.21✎ 15:07 | 
        (9) Вот ты и ответь. Зачем в этом запросе индексация.     | |||
| 12
    
        DAFA 06.03.21✎ 15:07 | 
        тут не такой уж замороченный запрос . чтоб его оптимизировать     | |||
| 13
    
        DAFA 06.03.21✎ 15:07 | 
        (11) лучше ты ответь как ты профа за час сдал и спеца по платформе без подготовки ?     | |||
| 14
    
        bfss-732 06.03.21✎ 15:09 | 
        (8) ВЫБРАТЬ РАЗРЕШЕННЫЕ
 ТаблицаТоваров.Ссылка КАК СчетФактура, 1 КАК КоличествоЭлементов, ТаблицаТоваров.Номенклатура.Код, ТаблицаТоваров.Коэффициент КАК Коэффициент, ТаблицаТоваров.Номенклатура ПОМЕСТИТЬ ВТ ИЗ Документ.ПоступлениеТоваровУслуг.Товары КАК ТаблицаТоваров ГДЕ ТаблицаТоваров.Ссылка = &СписокСФ ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ ТаблицаТоваров.Ссылка, 1, NULL, ТаблицаТоваров.Коэффициент, ТаблицаТоваров.Номенклатура ИЗ Документ.ПоступлениеТоваровУслуг.Оборудование КАК ТаблицаТоваров ГДЕ ТаблицаТоваров.Ссылка = &СписокСФ ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ВТ.СчетФактура, ВТ.КоличествоЭлементов, ВТ.НоменклатураКод, ВТ.Коэффициент, ВТ.Номенклатура.Код КАК НоменклатураКод1 ИЗ ВТ КАК ВТ СГРУППИРОВАТЬ ПО ВТ.Номенклатура, ВТ.СчетФактура, ВТ.КоличествоЭлементов, ВТ.НоменклатураКод, ВТ.Коэффициент | |||
| 15
    
        DAFA 06.03.21✎ 15:09 | 
        (11) я этот запрос на примере не использовал . но обычно индексация дает большой прирост  еще 10 лет на курсах нам это разжевывали     | |||
| 16
    
        DAFA 06.03.21✎ 15:11 | ||||
| 17
    
        ДенисЧ 06.03.21✎ 15:13 | 
        (13) Хватит бредить. Я понимаю, весна. Но то, что врач прописал, принимать надо всё-таки.     | |||
| 18
    
        ДенисЧ 06.03.21✎ 15:13 | 
        (15) Выкинь эти курсы и никогда больше о них не вспоминай.     | |||
| 19
    
        DAFA 06.03.21✎ 15:13 | 
        ты на вопрос не ответил )     | |||
| 20
    
        DAFA 06.03.21✎ 15:14 | 
        (18) все курсы фуфло     | |||
| 21
    
        DAFA 06.03.21✎ 15:14 | 
        (17) я к врачам лет 30 не ходил тьфу тьфу     | |||
| 22
    
        DAFA 06.03.21✎ 15:16 | 
        (18) глянь твой паблик)  v8: Сколько неободимо часов чтобы подготовиться на специалиста по платформе?     | |||
| 23
    
        RomanYS 06.03.21✎ 15:21 | 
        (14) Это ты так (0) переписал :)?
 Идея такая, только Номенклатура.Код из первого запроса убрать. И "1 КАК КоличествоЭлементов" во второй запрос перенести, хотя на скорость наверное не влияет | |||
| 24
    
        bfss-732 06.03.21✎ 15:39 | 
        (23) Да, как ты и писал. 
 Покажи что не так | |||
| 25
    
        bfss-732 06.03.21✎ 15:51 | 
        (23) 
 ВЫБРАТЬ РАЗРЕШЕННЫЕ ТаблицаТоваров.Ссылка КАК СчетФактура, ТаблицаТоваров.Коэффициент КАК Коэффициент, ТаблицаТоваров.Номенклатура ПОМЕСТИТЬ ВТ ИЗ Документ.ПоступлениеТоваровУслуг.Товары КАК ТаблицаТоваров ГДЕ ТаблицаТоваров.Ссылка = &СписокСФ ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ ТаблицаТоваров.Ссылка, ТаблицаТоваров.Коэффициент, ТаблицаТоваров.Номенклатура ИЗ Документ.ПоступлениеТоваровУслуг.Оборудование КАК ТаблицаТоваров ГДЕ ТаблицаТоваров.Ссылка = &СписокСФ ИНДЕКСИРОВАТЬ ПО ТаблицаТоваров.Номенклатура, Коэффициент ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ВТ.СчетФактура, ВТ.Коэффициент, ВТ.Номенклатура.Код КАК НоменклатураКод1, 1 КАК Поле1 ИЗ ВТ КАК ВТ СГРУППИРОВАТЬ ПО ВТ.Номенклатура, ВТ.СчетФактура, ВТ.Коэффициент, ВТ.Номенклатура.Код | |||
| 26
    
        RomanYS 06.03.21✎ 15:52 | 
        (24) что не так...
 В (0) совершенно другие данные выбирались (ГТД, страна...) (25) да. Только Сумма(1) потерял | |||
| 27
    
        bfss-732 06.03.21✎ 15:55 | 
        (26) 
 Да, данные поменял, извиняюсь | |||
| 28
    
        bfss-732 06.03.21✎ 15:58 | 
        (26) Спасибо! Сумма(1) добавил     | |||
| 29
    
        xXeNoNx 06.03.21✎ 16:06 | 
        (25) что-то сильно сомневаюсь что данный запрос быстрее будет     | |||
| 30
    
        ДенисЧ 06.03.21✎ 16:07 | 
        (22) Так это к 77. Там только ты за час не сможешь подготовиться     | |||
| 31
    
        xXeNoNx 06.03.21✎ 16:08 | 
        ТаблицаТоваров.Ссылка = &СписокСФ - так там список или ссылка?
 ВТ.Номенклатура.Код - попахивает соединением ПОМЕСТИТЬ ВТ - сброс в tempdb, а оно надо? | |||
| 32
    
        xXeNoNx 06.03.21✎ 16:12 | 
        (15) а в данном контексте(0) за счет чего при индексации будет прирост? Или ответ "обычно дает прирост" - это всегда прокатывает?     | |||
| 33
    
        bfss-732 06.03.21✎ 16:13 | 
        (31) ТаблицаТоваров.Ссылка В &СписокСФ
 Так должно быть | |||
| 34
    
        xXeNoNx 06.03.21✎ 16:14 | 
        (33) В (25) это не так     | |||
| 35
    
        bfss-732 06.03.21✎ 16:18 | 
        (34) а как?     | |||
| 36
    
        xXeNoNx 06.03.21✎ 16:20 | 
        (35) у тебя в (25) написан вот так:
 ВЫБРАТЬ РАЗРЕШЕННЫЕ ТаблицаТоваров.Ссылка КАК СчетФактура, ТаблицаТоваров.Коэффициент КАК Коэффициент, ТаблицаТоваров.Номенклатура ПОМЕСТИТЬ ВТ ИЗ Документ.ПоступлениеТоваровУслуг.Товары КАК ТаблицаТоваров ГДЕ ТаблицаТоваров.Ссылка = &СписокСФ | |||
| 37
    
        xXeNoNx 06.03.21✎ 16:20 | 
        а кто тебе посоветовал положить все во временную таблицу и проиндексировать?     | |||
| 38
    
        bfss-732 06.03.21✎ 16:27 | 
        (37) ↑ Выше по теме))     | |||
| 39
    
        xXeNoNx 06.03.21✎ 16:27 | 
        (35) у тебя в (0) написан код лучше чем в (25), оптимальнее, если не учитывать ТаблицаТоваров.Номенклатура.Код.
 Я бы (0) обернул в подзапрос и левым соединением получил коды номенклатуры(подзапрос - спрНоменклатуры), но не наоборот (спрНоменклатуры - подзапрос) | |||
| 40
    
        bfss-732 06.03.21✎ 16:27 | 
        (36) я "=" уже поменял на "В". Должно быть "В"     | |||
| 41
    
        xXeNoNx 06.03.21✎ 16:30 | 
        (38) Фотку прислать, где на заборе тоже написано.
 Этот товарищ ссылку прислал, а сам ее даже не прочитал. Там написано: "Конструкцию рекомендуется использовать по полям временных таблиц, по которым эта временная таблица будет соединяться с другими таблицами баз данных." у тебя есть где-то это соединение? | |||
| 42
    
        bfss-732 06.03.21✎ 16:32 | 
        (41) да, косяк мой     | |||
| 43
    
        xXeNoNx 06.03.21✎ 16:33 | 
        + ПОМЕСТИТЬ В - это дамп твоего запроса в tempdb, а оно нужно дампить?
 Смотри, база растет, количество документов увеличивается, деградация производительности твоего запроса будет происходить в любом случае | |||
| 44
    
        bfss-732 06.03.21✎ 16:43 | 
        (39) "Обернул в подзапрос" это вложенный запрос?     | |||
| 45
    
        1CnikPetya 06.03.21✎ 17:00 | 
        (5) Здесь индексирование ничем не поможет, только запрос замедлит.     | |||
| 46
    
        d4rkmesa 06.03.21✎ 17:14 | 
        (20) Курсы не фуфло. ) Но уже как то неоднократно выяснили, что в большинстве случаев индексировать ВТ не стоит. ) Только, тсс, не говорите это на аттестации.     | |||
| 47
    
        Itmaint 06.03.21✎ 17:14 | 
        Если чисто позанудствовать тут одно место оптимизации:
 -ТаблицаТоваров.Ссылка В(&СписокСФ) Заменяем на внутреннее соединение Но не факт, что будет улучшение. | |||
| 48
    
        Itmaint 06.03.21✎ 17:16 | 
        (15) полнейшее непонимание темы у вас.     | |||
| 49
    
        tndr3 06.03.21✎ 17:20 | 
        (0) Я бы в две временные таблицы собрал бы данные из разных ТЧ с наложенными условиями, а потом бы их объединил...
 Но вообще ж по регистру надо такие данные собирать.. Нет? | |||
| 50
    
        timurhv 06.03.21✎ 17:29 | 
        (47) если в СписокСФ передается до 128 элементов, то в SQL используется конструкция IN со списком параметров. Если больше, то запрос 1С сам переделает под внутреннее соединение с временной таблицей.     | |||
| 51
    
        Itmaint 06.03.21✎ 17:47 | 
        (50) Спасибо. Я как раз пытался вспомнить, что магическое 128 у вас в (2) означает.     | |||
| 52
    
        mikecool 06.03.21✎ 20:14 | 
        (30) а под тебя копают и глубоко...     | |||
| 53
    
        DAFA 07.03.21✎ 08:37 | 
        (45) да я специально дал такой ответ посмотреть кто. что знает 
 интуиция подсказывает .что переделать с использованием временных табл через менеджер . даст результат | |||
| 54
    
        xXeNoNx 07.03.21✎ 12:37 | 
        (53) Доказательства будут?     | |||
| 55
    
        xXeNoNx 07.03.21✎ 12:37 | 
        (44) Да, это вложенный запрос     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |