Вход | Регистрация



MS SQL и 1С. Объясните, где я не прав?

MS SQL и 1С. Объясните, где я не прав?
Я
   H A D G E H O G s
 
11.01.19 - 00:52
Дня доброго.
Внедрение, внедрение, документ медленно записывает регистр сведений, который ему подчинен и имеет срез итогов. Затык вот тут

INSERT INTO #tt24 WITH(TABLOCK) (_Period, _RecorderTRef, _RecorderRRef, _Fld8417RRef, _Fld8418RRef, _Fld8419RRef, _Fld8420, _Fld8421RRef, _Fld8422RRef, _Fld281) SELECT
T1._Period,
T1._RecorderTRef,
T1._RecorderRRef,
T1._Fld8417RRef,
T1._Fld8418RRef,
T1._Fld8419RRef,
T1._Fld8420,
T1._Fld8421RRef,
T1._Fld8422RRef,
T1._Fld281
FROM dbo._InfoRgSL8427 T1
INNER JOIN dbo._InfoRg8416 T2
ON T2._Fld8417RRef = T1._Fld8417RRef AND T2._Fld8418RRef = T1._Fld8418RRef AND T2._Fld8419RRef = T1._Fld8419RRef AND T2._Fld281 = T1._Fld281
WHERE (((T1._Fld281 = P1)) AND (T2._Fld281 = @P2)) AND (T2._RecorderTRef = 0x0000008D AND T2._RecorderRRef = @P3)


Сначало долго тупил и не верил своим глазам - tablescan по _InfoRgSL8427, а потом присмотрелся и увидел, что единственный индекс по _InfoRgSL8427  - некластерный.
Ну я понимаю, чтобы быстрее вставки были, но как так то, тут и так как раз запись в регистр идет.

Это глюк или хитрый план?
Платформа 8.3.12
 
 
   Fram
 
1 - 11.01.19 - 01:45
(0) обе таблицы огромные?
   Fram
 
2 - 11.01.19 - 01:46
попробуй сначала отбор по одной, а потом соединение, если это вощможно на стороне 1С
   Курцвейл
 
3 - 11.01.19 - 06:33
Это явный глюк. Хитрые планы в природе встречаются гораздо реже.
   АНДР
 
4 - 11.01.19 - 06:37
Это вставка во временную таблицу, а не запись в регистр.

Скан таблицы ты сам заказал, не указав в УСЛОВИЯХ СОЕДИНЕНИЯ ограничение на КЛЮЧЕВОЕ для таблицы среза первых (последних) поле period. Условие на регистратор применяется уже к итогам     объединения.
   мокасинчик
 
5 - 11.01.19 - 06:49
(4) если для таблицы среза не указывать период, то берутся текущие итоги
(0) выкладывай план в sqlplan
   АНДР
 
6 - 11.01.19 - 07:47
(5) В 1С - да. Из ограничения приведенного запроса этого не следует.
   rphosts
 
7 - 11.01.19 - 09:09
(0)ну дык срез-же... там случайно не ресурсы тебе нечисловые нужны?
   Конструктор1С
 
8 - 11.01.19 - 09:15
Хех... Один из параметров запроса оказался зареганным на форуме)
   ptiz
 
9 - 11.01.19 - 09:25
(0) Т.е. индексы не соответствуют описанию тут?
https://its.1c.ru/db/metod8dev#content:1590:hdoc@2db36f1b
   H A D G E H O G s
 
10 - 11.01.19 - 09:47
Ну, ничего нового.

Если внимательно прочитать заголовок, то можно увидеть

"документ медленно записывает регистр сведений, который ему подчинен и имеет срез итогов. "
 
 Рекламное место пустует
   H A D G E H O G s
 
11 - 11.01.19 - 09:49
В процессе записи регистра, есть этап записи во временную таблицу, это делает платформа. 600 kReads на ровном месте.
   bolobol
 
12 - 11.01.19 - 10:19
(11) Вы уже сообщили куда следует?
   Вафель
 
13 - 11.01.19 - 10:27
как вариант сделать свою таблицу итогов
   H A D G E H O G s
 
14 - 11.01.19 - 10:29
(12) (13) Я уже прочитал где следует

http://downloads.v8.1c.ru/content//Platform/8_3_13_1644/1cv8upd_8_3_13_1644.htm#199f74c8-0668-11e8-a3f7-0050569f678a

Для регистров сведений реализовано формирование кластерного индекса по измерениям для физических таблиц среза первых и среза последних. Описание структуры индекса (см. здесь).

Отключен контроль уникальности индексов.

Оптимизированы запросы получения данных из таблиц срезов.

Построение новых индексов выполняется во время реструктуризации соответствующего регистра сведений или при выполнении реструктуризации базы данных во время выполнения операции тестирования и исправления.

Источник: http://downloads.v8.1c.ru/content//Platform/8_3_13_1644/1cv8upd_8_3_13_1644.htm#0055064e-0a7f-11e8-a3f7-0050569f678a
   H A D G E H O G s
 
15 - 11.01.19 - 10:30
Ну как так то, почему это появилось в 8.3.13, на которую мы не перейдем еще долго.
   H A D G E H O G s
 
16 - 11.01.19 - 10:33
Но у меня есть хитрый план.
   bolobol
 
17 - 11.01.19 - 11:07
(16) Как правильно было замечено в (3): "Это явный глюк. Хитрые планы в природе встречаются гораздо реже."
   Fragster
 
18 - 11.01.19 - 11:21
это из-за суррогатного поля первичного ключа или что-то типа того?
   H A D G E H O G s
 
19 - 11.01.19 - 11:29
(18) нет. Это из за того, что нет кластерного индекса. И некластерный индекс может поискать только внутри себя и даже RIDLookup не сделать.
   H A D G E H O G s
 
20 - 11.01.19 - 11:31
А запросу нужны вот эти парни
T1._Period,
T1._RecorderTRef,
T1._RecorderRRef,

которых нет в некласетрном индексе
   rsv
 
21 - 11.01.19 - 11:31
(0) попробуйте ради интереса в студии inner hash join
   Dmitry1c
 
22 - 11.01.19 - 11:33
Будни экспертов по платформе.
   Вафель
 
23 - 11.01.19 - 11:36
индекс можно ручками добавить, если так нужно
   H A D G E H O G s
 
24 - 11.01.19 - 11:37
(23) Ох уж эти хитрые планы.
   Вафель
 
25 - 11.01.19 - 11:39
(24) да пожизненно так делали
   rphosts
 
26 - 11.01.19 - 17:58
(16) это нарушение лиц. соглашения
   Fram
 
27 - 11.01.19 - 18:17
(26) вот ведь проблема
   rphosts
 
28 - 11.01.19 - 18:19
(27) это факт, а проблема или нет - решает каждый сам для себя...
   Конструктор1С
 
29 - 12.01.19 - 04:49
Как-то беспечно 1Сники пока что относятся к нарушению лицензионного соглашения. А ведь с точки зрения ЛС, что платформу крякнуть, что индекс средствами СУБД ляпнуть, это всё едино нарушение ЛС, со всеми вытекающими.
   h_miha
 
30 - 12.01.19 - 05:22
я писал об этой ошибке год назад на форуме разработчиков 1с https://partners.v8.1c.ru/forum/, на что мне был дан ответ что это зарегистрированная ошибка. суть в том что таблицы, в которых хранится срез актуальных итогов ( т.е. при установленном флаге "Хранить итоги срез последних" практически единственная представляет из себя кучу (т.е. не имеет кластеризованного индекса, данные не упорядочены) помимо этого настройка регистра сведений : признак индексировать у измерения также не переносится в эту таблицу.  вариантов несколько:  1) отключить флаг "Хранить итоги срез последних"  2) в запросе указать дату (возможно отличную от текущей хотя бы на секунду) - будет использован подзапрос к основной таблице 3) самостоятельно навешать кластеризованный индекс = )


Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Рекламное место пустует