Имя: Пароль:
1C
1С v8
Оптимизация запроса к регистру сведений
,
0 Humanoid483
 
26.05.18
18:45
Доброго времени суток.

Подскажите, пожалуйста, как оптимизировать запрос к регистру сведений, чтобы выполнялся быстрее?

Поле1 и Поле2 - составной тип данных из всех документов базы. С установленным значением Индексировать.

Сам запрос:
ВЫБРАТЬ
    РегистрСведений.Поле1,
    РегистрСведений.Поле2
ИЗ
    РегистрСведений.НазваниеРегистра КАК РегистрСведений
ГДЕ
    (РегистрСведений.Поле1 В (&СписокДокументов)
            ИЛИ РегистрСведений.Поле2 В (&СписокДокументов))
1 hhhh
 
26.05.18
19:00
(0) ну ИЛИ убери, чудак.
2 Humanoid483
 
26.05.18
19:06
(1) сделать условие И?
3 1СныйЮзер
 
26.05.18
19:15
Нежелательно обращаться к реквизиту, который составной. Так 1Ска будет обращаться ко всем таблицам, которые указаны в Типе.
Сделай через Выбор...Тогда для каждого из документов, которые могут быть в этом реквизите.Так будет быстрее выполняться.
4 youalex
 
26.05.18
19:21
(3) не в этом случае
5 youalex
 
26.05.18
19:22
(0) разбей ИЛИ На ОБЪЕДИНИТЬ ВСЕ
6 drei
 
26.05.18
19:29
(0) список внутреннее соединение регистр по поле1 обьединить список внутреннее соединение регистр по поле2

(5) объединить все задвоит строки, надо обьединить
7 youalex
 
26.05.18
19:41
(6) >>объединить все задвоит строки
зависит от логики архитектуры.

>>список внутреннее соединение регистр
Интересная идея, но можно залить &Список во времянку и вместо объединения цеплять регистр к времянке двумя ЛС.
8 Humanoid483
 
26.05.18
19:57
Получил следующий запрос (он получится быстрее?)


ВЫБРАТЬ
    НазваниеРегистра.Поле1 КАК Документ
ИЗ
    РегистрСведений.НазваниеРегистра КАК НазваниеРегистра
ГДЕ
    НазваниеРегистра.Поле1 В(&СписокДокументов)

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    НазваниеРегистра.Поле2
ИЗ
    РегистрСведений.НазваниеРегистра КАК НазваниеРегистра
ГДЕ
    НазваниеРегистра.Поле2 В(&СписокДокументов)
9 Cool_Profi
 
26.05.18
20:01
А у тебя в списке документов сколько их?
Вообще - нужно смотреть план в скуле
10 Humanoid483
 
26.05.18
20:04
(9) для теста взял 20 ссылок
11 vde69
 
26.05.18
20:41
1. составной тип для измерения бесполезно индексировать
2. составной тип по любому это вложенный запрос к метаданным, причем очень плохой...

такие задачи следует решать через пользовательский тип и уже его загонять в регистр...
12 drei
 
26.05.18
20:47
(11)
3. Трава была зеленее, мне лучше знать, эх, молодежь!
4. Мы все умрем.
13 H A D G E H O G s
 
26.05.18
21:01
(11) не согласен.
14 H A D G E H O G s
 
26.05.18
21:02
(0) Если на Поле2 есть индекс - то - (8), иначе - оставить как есть.
15 Tankur
 
27.05.18
10:14
ВЫБРАТЬ
    РегистрСведений.Поле1,
    РегистрСведений.Поле2
ИЗ
    РегистрСведений.НазваниеРегистра КАК РегистрСведений
ГДЕ
    (РегистрСведений.Поле1 В (&СписокДокументов)

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    РегистрСведений.Поле1,
    РегистрСведений.Поле2
ИЗ
    РегистрСведений.НазваниеРегистра КАК РегистрСведений
ГДЕ
РегистрСведений.Поле2 В (&СписокДокументов)
16 Cool_Profi
 
27.05.18
13:29
(11) "2. составной тип по любому это вложенный запрос к метаданным"
Если  наложить условие на тип через ССЫЛКА - то вполне себе нормальный, я смотрел планы
17 lEvGl
 
гуру
27.05.18
14:19
все это словоблудство, нихрена не понятно - что надо, что в списках из фильтров, через выразить можно однозначно определить тип ссылок, будет быстрее, но ведь не понятно что там и где. друг, никто кроме тебя лучше не знает ситуации, что да как, спасение утопающих - дело рук самих утопающих
18 youalex
 
27.05.18
14:41
(17) >>все это словоблудство

)))
19 rphosts
 
27.05.18
14:50
(14) небольшая добавочка, если в списке документы 1 типа можно использовать ВЫРАЗИТЬ ... КАК ...
20 xXeNoNx
 
28.05.18
07:52
В 8.3.11 и 8.3.12 не работает пересчет итогов
21 xXeNoNx
 
28.05.18
07:53
(20) пардон, не туда
Оптимист верит, что мы живем в лучшем из миров. Пессимист боится, что так оно и есть.