Имя: Пароль:
1C
1С v8
v8: Стоит ли индексировать измерения регистра сведений?
0 Галахад
 
гуру
28.06.12
08:13
Будут ли быстре выполнятьсмя запросы к нему?
1 golden-pack
 
28.06.12
08:14
да
2 ДенисЧ
 
28.06.12
08:14
Будут.
Но будет медленней проходить запись. тут нужно искать компромисс
3 МихаилМ
 
28.06.12
08:23
все зависит от селективности
если отбот будет по 2 полям с одинаковой селективностью индексов то оптимизатор запросов мс скл
может выбрать фул скан. куда уж неотимальней
4 vde69
 
28.06.12
08:26
(2) интересно найти базу где количество записей в регистр превосходит количество чтений :)

индексировать нужно обязательно все измерения, только что-бы не нарватся нужно соблюдать простые правила

1. в измерениях нельзя использовать составные и примитивные типы
2. более 5 измерений ведет к резкому величению тормозов
5 butterbean
 
28.06.12
08:28
(4) почему примитивные нельзя??
6 butterbean
 
28.06.12
08:28
(5)+ а для небольших по объему записей регистров хотя-бы можно??
7 vde69
 
28.06.12
08:29
(5) по тому-что гладиолус :)

приметивные типы занимают больший размер (чем ссылочные) кластерного индекса.
8 Defender aka LINN
 
28.06.12
08:32
(7) Как-то на мой скромный взгляд "занимают больший размер" и "нельзя" немножко разные вещи. Ну и "ссылочное поле" - это 2 числовых, по сути. Как же так хитро получается?
9 andrewks
 
28.06.12
08:35
(7) про строки большой длины согласен, числа в измерениях сомнительны. а вот почему бы не индексировать по небольшим строкам и датам?  (хотя единственным не-моветоном в измерениях, пожалуй, будут дата и булево)
10 vde69
 
28.06.12
08:36
(8) индекс приметивного типы - содержат идентификатор типа...
11 Defender aka LINN
 
28.06.12
08:38
(10) Еще раз: ссылка - это 2 (ДВА) числовых поля. Почему по двум полям индекс - хорошо, по одному - плохо и вообще нельзя?
12 Галахад
 
гуру
28.06.12
08:46
Гм. Оказалось, что почти никакой разницы. :-)

проблема в том, что в запросе есть конструкции типа.
РС.Ссылка.Дата
РС.Ссылка.Номер
РС.Ссылка.Проыеден

Как только их убираю 1-2 сек.
С ними 40...

Есть какие-нибуль мысли?
13 andrewks
 
28.06.12
08:47
текст запроса в студию
14 Sammo
 
28.06.12
08:48
(0) Зависит от запроса.

(12) Неявное соединение в скулевском запросе. А если еще составной тип, то неявное левое соединение с таблицами всех документов, входящих в тип.
Там случайно тип не ДокументСсылка? :)
15 Ненавижу 1С
 
гуру
28.06.12
08:49
(10) чего это?
16 Галахад
 
гуру
28.06.12
08:49
ВЫБРАТЬ
   Соответствие1С_и_не1С.IDОбъекта КАК НомерЗаказа,
   Соответствие1С_и_не1С.ИмяОбъекта,
   Соответствие1С_и_не1С.СсылкаНаОбъект.Номер КАК Номер,
   Соответствие1С_и_не1С.СсылкаНаОбъект.Дата КАК Дата,
   Соответствие1С_и_не1С.СсылкаНаОбъект.Ссылка КАК Ссылка,
   ВЫБОР
       КОГДА Соответствие1С_и_не1С.СсылкаНаОбъект.Ссылка ССЫЛКА Документ.СчетНаОплатуПокупателю
           ТОГДА ИСТИНА
       ИНАЧЕ ЛОЖЬ
   КОНЕЦ КАК ЭтоСчет,
   Соответствие1С_и_не1С.СсылкаНаОбъект.Проведен КАК Проведен,
   Соответствие1С_и_не1С.КоэффициентПересчета
ИЗ
   РегистрСведений.Соответствие1С_и_не1С КАК Соответствие1С_и_не1С
ГДЕ
   Соответствие1С_и_не1С.ИмяОбъекта В(&Фильтр)
   И Соответствие1С_и_не1С.СсылкаНаОбъект.Дата МЕЖДУ &ДатаНач И &ДатаКон
   И (&УсловиеПроведенПусто
           ИЛИ (НЕ Соответствие1С_и_не1С.СсылкаНаОбъект.Проведен))
17 Sammo
 
28.06.12
08:50
СсылкаНаОбъект какого типа?
18 andrewks
 
28.06.12
08:51
используй явное соединение РегистрСведений.Соответствие1С_и_не1С и объекта СсылкаНаОбъект
19 Галахад
 
гуру
28.06.12
08:52
(17)
ДокументСсылка,
СправочникСсылка.Контрагенты,
СправочникСсылка.Номенклатура

(18) Гм. не понял.
20 Sammo
 
28.06.12
08:53
ВЫБОР
       КОГДА Соответствие1С_и_не1С.СсылкаНаОбъект.Ссылка ССЫЛКА Документ.СчетНаОплатуПокупателю

Не камильфо (СсылкаНаОбъект.Ссылка)
21 Галахад
 
гуру
28.06.12
08:55
(20) Убрал этот кусок вообще - не помагло.
   ВЫБОР
       КОГДА Соответствие1С_и_не1С.СсылкаНаОбъект.Ссылка ССЫЛКА Документ.СчетНаОплатуПокупателю
           ТОГДА ИСТИНА
       ИНАЧЕ ЛОЖЬ
   КОНЕЦ КАК ЭтоСчет,
22 Sammo
 
28.06.12
08:56
(19) Ну и "получи фашист гранату". Когда данный запрос получает скуль, он таблицу Соответствие1С_и_не1С join-ит с таблицами _ВСЕХ_ документов, которые есть в метаданных + с таблицами 2 справочников.
Я уж молчу, что какое поведение запроса ты ожидаешь от запроса, если СсылкаНаОбъект если он справочникСсылка.Номенклатура - что он должен вернуть на СсылкаНаОбъект.Проведен ?
В чем суть - надо отобрать все по флиьтру или таки только счета?
23 Sammo
 
28.06.12
08:57
20 - это просто некрасивость - использовать ссылку от ссылки
24 andrewks
 
28.06.12
08:57
(19) 1. жесть
25 andrewks
 
28.06.12
08:58
какова задача, вообще?
26 Галахад
 
гуру
28.06.12
08:59
(22) Я правильно понял? Если явно указать методанные.документы, которые мне нужноы. Их штук 8, то будет быстее?

По второму вопросу - справочникСсылка.Номенклатура
Используется фильтр
Соответствие1С_и_не1С.ИмяОбъекта В(&Фильтр)
27 Галахад
 
гуру
28.06.12
09:00
(24) Что именно?

(25) Ну, как бы: Соответствие1С_и_не1С
28 Defender aka LINN
 
28.06.12
09:11
(22) "если СсылкаНаОбъект если он справочникСсылка.Номенклатура - что он должен вернуть на СсылкаНаОбъект.Проведен ? " - NULL. ВНЕЗАПНО, да?
29 Maxus43
 
28.06.12
09:14
(4) >>интересно найти базу где количество записей в регистр превосходит количество чтений
легко, версионирование)
30 Sammo
 
28.06.12
09:15
(28) Вопрос был не в том, что вернет, а в том, что он ожидает, что вернет. Если ожидает, что вернет булево, а вернет Null получится сюрприз :)
31 Галахад
 
гуру
28.06.12
09:16
Подведу итог.
1. Сделал как в (22). Явно прописал в регистре регистраторы.
2. Получил 1-2 секунды.

Спасибо всем. SammoЮ, респект.
32 unregistered
 
28.06.12
09:28
Гораздо интереснее что означает реквизит Дата у справочников Контрагенты и Номенклатура. Ведь в запросе есть условие

ГДЕ Соответствие1С_и_не1С.СсылкаНаОбъект.Дата МЕЖДУ &ДатаНач И &ДатаКон
33 unregistered
 
28.06.12
09:30
Кстати. Ведь уже есть некий параметр &Фильтр. Если предположить, что это фильтр по именам объектов метаданных, то можно собрать текст запроса с явными соединениями к нужным таблицам.