Имя: Пароль:
1C
1С v8
Запрос отрабатывает 37 секунд. Это нормально?
0 DIvanmgn
 
01.08.14
11:21
Работаю над оптимизацией запроса. Достиг своего потолка. Может можно ускорить?

ВЫБРАТЬ
    &ОТ1 КАК ОТ1,
    &ОТ2 КАК ОТ2
ПОМЕСТИТЬ ВТ_ОТ

ИНДЕКСИРОВАТЬ ПО
    ОТ1,
    ОТ2
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    исУкрупненныеНоменклатурныеГруппы.Родитель КАК Родитель,
    ХарактеристикиНоменклатуры.Ссылка КАК Характеристика,
    &Подразделение КАК Подразделение
ПОМЕСТИТЬ ВТ_Ключ
ИЗ
    Справочник.ХарактеристикиНоменклатуры КАК ХарактеристикиНоменклатуры
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.исУкрупненныеНоменклатурныеГруппы КАК исУкрупненныеНоменклатурныеГруппы
        ПО ХарактеристикиНоменклатуры.бсУкрупненнаяНоменклатурнаяГруппа = исУкрупненныеНоменклатурныеГруппы.Ссылка
            И (исУкрупненныеНоменклатурныеГруппы.Родитель = &УТГ)

ИНДЕКСИРОВАТЬ ПО
    Характеристика,
    Подразделение,
    Родитель
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ХарактеристикиНоменклатурыДополнительныеРеквизиты.Значение КАК ОТ,
    ХарактеристикиНоменклатурыДополнительныеРеквизиты.Свойство,
    ХарактеристикиНоменклатурыДополнительныеРеквизиты.Ссылка КАК Характеристика
ПОМЕСТИТЬ ВТ_ОТ1
ИЗ
    ВТ_Ключ КАК ВТ_Ключ
        ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ХарактеристикиНоменклатуры.ДополнительныеРеквизиты КАК ХарактеристикиНоменклатурыДополнительныеРеквизиты
            ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТ_ОТ КАК ВТ_ОТ
            ПО ХарактеристикиНоменклатурыДополнительныеРеквизиты.Свойство = ВТ_ОТ.ОТ1
        ПО ВТ_Ключ.Характеристика = ХарактеристикиНоменклатурыДополнительныеРеквизиты.Ссылка

СГРУППИРОВАТЬ ПО
    ХарактеристикиНоменклатурыДополнительныеРеквизиты.Значение,
    ХарактеристикиНоменклатурыДополнительныеРеквизиты.Свойство,
    ХарактеристикиНоменклатурыДополнительныеРеквизиты.Ссылка

ИНДЕКСИРОВАТЬ ПО
    Характеристика
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ХарактеристикиНоменклатурыДополнительныеРеквизиты.Значение КАК ОТ,
    ХарактеристикиНоменклатурыДополнительныеРеквизиты.Свойство,
    ХарактеристикиНоменклатурыДополнительныеРеквизиты.Ссылка КАК Характеристика
ПОМЕСТИТЬ ВТ_ОТ2
ИЗ
    ВТ_Ключ КАК ВТ_Ключ
        ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ХарактеристикиНоменклатуры.ДополнительныеРеквизиты КАК ХарактеристикиНоменклатурыДополнительныеРеквизиты
            ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТ_ОТ КАК ВТ_ОТ
            ПО ХарактеристикиНоменклатурыДополнительныеРеквизиты.Свойство = ВТ_ОТ.ОТ2
        ПО (ХарактеристикиНоменклатурыДополнительныеРеквизиты.Ссылка = ВТ_Ключ.Характеристика)

СГРУППИРОВАТЬ ПО
    ХарактеристикиНоменклатурыДополнительныеРеквизиты.Значение,
    ХарактеристикиНоменклатурыДополнительныеРеквизиты.Свойство,
    ХарактеристикиНоменклатурыДополнительныеРеквизиты.Ссылка

ИНДЕКСИРОВАТЬ ПО
    Характеристика
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ВТ_Ключ.Родитель,
    ВТ_Ключ.Характеристика,
    ВТ_Ключ.Подразделение,
    ВТ_ОТ1.ОТ,
    ВТ_ОТ2.ОТ КАК ОТ1
ПОМЕСТИТЬ ВТ
ИЗ
    ВТ_Ключ КАК ВТ_Ключ
        ЛЕВОЕ СОЕДИНЕНИЕ ВТ_ОТ2 КАК ВТ_ОТ2
        ПО ВТ_Ключ.Характеристика = ВТ_ОТ2.Характеристика
        ЛЕВОЕ СОЕДИНЕНИЕ ВТ_ОТ1 КАК ВТ_ОТ1
        ПО ВТ_Ключ.Характеристика = ВТ_ОТ1.Характеристика
1 Кир Пластелинин
 
01.08.14
11:31
а излишне то зачем индексировать? может проглядел, но вот по родителю как минимум не увидел соединения хотя бы
2 DIvanmgn
 
01.08.14
11:32
(1) Родитель нужен потом
3 Кир Пластелинин
 
01.08.14
11:33
(2) из этой же таблицы? ну и может тогда полный запрос для начала? или выполняется данный кусок 37 секунд? субд какая?
4 DIvanmgn
 
01.08.14
11:36
MS SQL
5 DIvanmgn
 
01.08.14
11:37
Предполагаю, что весь запрос будет выполняться еще дольше.
6 _fvadim
 
01.08.14
11:38
профайлером посмотреть узкие места
7 Chai Nic
 
01.08.14
11:44
Для начала выполнить его по частям, чтобы определить, какая именно часть тормозит..
8 DIvanmgn
 
01.08.14
11:48
(8) с самого начала выходит тормозит:

ВЫБРАТЬ
    &ОТ1 КАК ОТ1,
    &ОТ2 КАК ОТ2
ПОМЕСТИТЬ ВТ_ОТ

ИНДЕКСИРОВАТЬ ПО
    ОТ1,
    ОТ2
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    исУкрупненныеНоменклатурныеГруппы.Родитель КАК Родитель,
    ХарактеристикиНоменклатуры.Ссылка КАК Характеристика,
    &Подразделение КАК Подразделение
ИЗ
    Справочник.ХарактеристикиНоменклатуры КАК ХарактеристикиНоменклатуры
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.исУкрупненныеНоменклатурныеГруппы КАК исУкрупненныеНоменклатурныеГруппы
        ПО ХарактеристикиНоменклатуры.бсУкрупненнаяНоменклатурнаяГруппа = исУкрупненныеНоменклатурныеГруппы.Ссылка
            И (исУкрупненныеНоменклатурныеГруппы.Родитель = &УТГ)
9 Мимохожий Однако
 
01.08.14
11:55
Какова структура параметров?
10 Maxus43
 
01.08.14
11:57
имхается мне что индексировать по одному полю смысла нет,
т.е. по полям &Параметр
11 Maxus43
 
01.08.14
11:59
Внутреннее соединение под вопросом... попробовать отказаться надо
12 Fragster
 
гуру
01.08.14
12:00
первая таблица не нужна
13 Fragster
 
гуру
01.08.14
12:01
запихать отбор во вторую или какую там.
14 Awreli
 
01.08.14
12:02
Автор, твоё горе в соединении. По уму собирать нужные данные во временные таблицы, и их вот объединять. Точно точно
15 Awreli
 
01.08.14
12:03
где то даже была статья от 1с про оптимизацию запросов.
16 krbIso
 
01.08.14
12:06
план запроса глянь
17 m-serg74
 
01.08.14
12:06
(0) весь запрос в топку...
(15) какая оптимизация?
18 vde69
 
01.08.14
12:09
все поля временной таблицы должны быть типизироваными,

в твоем случае есть Справочник.ХарактеристикиНоменклатуры.ДополнительныеРеквизиты  составного типа, это ОЧЕНЬ плохо

если у тебя есть возможносьть заранее знать получаемый тип то нужно использовать
Выразить для "ХарактеристикиНоменклатурыДополнительныеРеквизиты.Ссылка"

если такой возможности нет - отказатся от ВТ
19 Fragster
 
гуру
01.08.14
12:10
(18) выразить нужно только при разыменовывании
20 vde69
 
01.08.14
12:12
(19) имено это я и имел в виду ;)
21 DIvanmgn
 
01.08.14
12:13
ВЫБРАТЬ    исУкрупненныеНоменклатурныеГруппы.Родитель КАК Родитель,
    ХарактеристикиНоменклатуры.Ссылка КАК Характеристика
ИЗ
    Справочник.исУкрупненныеНоменклатурныеГруппы КАК исУкрупненныеНоменклатурныеГруппы
        ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ХарактеристикиНоменклатуры КАК ХарактеристикиНоменклатуры
        ПО (ХарактеристикиНоменклатуры.бсУкрупненнаяНоменклатурнаяГруппа = исУкрупненныеНоменклатурныеГруппы.Ссылка)

такой запрос отрабатывает 24 секунды (это я самое начало сильно упростил)

а такой:

ВЫБРАТЬ ПЕРВЫЕ 1000
    исУкрупненныеНоменклатурныеГруппы.Родитель КАК Родитель,
    ХарактеристикиНоменклатуры.Ссылка КАК Характеристика
ИЗ
    Справочник.исУкрупненныеНоменклатурныеГруппы КАК исУкрупненныеНоменклатурныеГруппы
        ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ХарактеристикиНоменклатуры КАК ХарактеристикиНоменклатуры
        ПО (ХарактеристикиНоменклатуры.бсУкрупненнаяНоменклатурнаяГруппа = исУкрупненныеНоменклатурныеГруппы.Ссылка)

8 секунд
22 DIvanmgn
 
01.08.14
12:17
похоже дело в том что реквизит справочника характеристикиНоменклатуры бсУкрупненнаяНоменклатурнаяГруппа не индексирован
23 Fragster
 
гуру
01.08.14
12:17
(21) дай тимвьювер
24 Fragster
 
гуру
01.08.14
12:18
(22) это возможно
25 DIvanmgn
 
01.08.14
12:42
выяснилось, что длительность связана с использованием "неправильной" консоли запросов. На "правильной" - 15 мс.
26 Fragster
 
гуру
01.08.14
12:43
у меня консоль http://devtool1c.ucoz.ru/
27 DIvanmgn
 
01.08.14
12:45
(26) да-да. именно на ней все хорошо )
28 DIvanmgn
 
01.08.14
12:46
Спасибо за советы. Многого не знал.
29 Maxus43
 
01.08.14
12:47
а при чем тут консоль?
30 Maxus43
 
01.08.14
12:47
ХарактеристикиНоменклатуры.Ссылка КАК Характеристика
Представление(ХарактеристикиНоменклатуры.Ссылка)  КАК ПредставлениеХарактеристика

может по этому? При выводе за каждой ссылкой он опять делает запрос в базу, за представлением
31 DIvanmgn
 
01.08.14
12:49
(29) при том что я время замерял секундомером на телефоне. Получается львиную долю времени просто вывод в табличный документ занимал
32 Maxus43
 
01.08.14
12:51
(31) да >(30). Прдеставление сразу вытаскивай в запросе
33 Maxus43
 
01.08.14
12:56
в стандартной консоли там внизу появляется индикатор "вывод отчета" (как то так), по нему понятно что запрос давно выполнился, и началось долбление субд запросами по каждой строчке отчета