|
Оптимизация запроса 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) Да, это вложенный запрос
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |