|
Как оптимизировать запрос... | ☑ | ||
---|---|---|---|---|
0
Ministr
18.06.14
✎
12:42
|
Привет, всем! В УПП - есть регистр сведений "Версии объектов", измерение "Объект" - составной тип содержит все справочники и все документы. Необходимо выбрать версии по определенным типам объекта. Я написал следующий запрос..:
ВЫБРАТЬ ВерсииОбъектов.Объект, ВерсииОбъектов.НомерВерсии, ВерсииОбъектов.ВерсияОбъекта, ВерсииОбъектов.АвторВерсии, ВерсииОбъектов.ДатаВерсии ИЗ РегистрСведений.ВерсииОбъектов КАК ВерсииОбъектов ГДЕ (ВерсииОбъектов.Объект ССЫЛКА Документ.ВводНачальныхОстатковОС ИЛИ ВерсииОбъектов.Объект ССЫЛКА Документ.ИзменениеСпособовОтраженияРасходовПоАмортизацииОС ИЛИ ВерсииОбъектов.Объект ССЫЛКА Документ.КорректировкаЗаписейРегистров ИЛИ ВерсииОбъектов.Объект ССЫЛКА Документ.ПринятиеКУчетуОС) Как сделать более оптимально? Недавно прочитал статью про составной тип данных - понял, что при неумелом пользовании в запросах.. можно дорого заплатить по времени) |
|||
1
Fragster
гуру
18.06.14
✎
12:44
|
посмотри профайлером, что там на выходе получается. по идее может быть замена на ТИП и/или на Объединить, если кривота.
|
|||
2
Ministr
18.06.14
✎
12:46
|
(1) не хочу даже уточнять, потому что мне это ничего не говорит... нет , случайно статьи про, то как смотреть профайлы и прочее...
|
|||
3
H A D G E H O G s
18.06.14
✎
12:46
|
(2) Есть гугл.
|
|||
4
H A D G E H O G s
18.06.14
✎
12:47
|
(0) А что не так работает?
|
|||
5
МихаилМ
18.06.14
✎
12:47
|
нормальный запрос, если по полю Объект есть подходящий индекс
|
|||
6
H A D G E H O G s
18.06.14
✎
12:47
|
(5) Автор может выгружать результат в ТЗ, например, или выводить на экран.
|
|||
7
Ministr
18.06.14
✎
12:47
|
(3) Согласен
|
|||
8
Fragster
гуру
18.06.14
✎
12:50
|
(5) индекс-то есть, только он составной из 3-х (в данном случае) полей (на вопрос, почему для составных полей только ссылочных типов не использовать 2 колонки, мне никто не ответил).
вопрос в том, как парсер 1сный делает "ИЛИ" для отбора по первым двум колонкам из трех. может быть банальная штука с заменой ИЛИ на Объединить все поможет в случае, если запрос криво преобразуется. А если не криво - то ничего не поможет. |
|||
9
Ministr
18.06.14
✎
12:51
|
(5) Я один раз таблицу сформирую в начале функции с помощью запроса, потом по ней с помощью отбора в цикле уже буду находить нужные мне данные.
|
|||
10
Fragster
гуру
18.06.14
✎
12:51
|
а смотреть в профайлер мне лень.
|
|||
11
H A D G E H O G s
18.06.14
✎
12:51
|
(10) Я посмотрю, но думаю, проблема (а ведь мы про нее даже не услышали) - в постобработке
|
|||
12
Крошка Ру
18.06.14
✎
12:54
|
(0)
ВЫБРАТЬ ВЫБОР КОГДА ВерсииОбъектов.Объект ССЫЛКА Документ.ПринятиеКУчетуОС ТОГДА ВЫРАЗИТЬ(ВерсииОбъектов.Объект КАК Документ.ПринятиеКУчетуОС КОГДА ВерсииОбъектов.Объект ССЫЛКА Документ..... и т.д. КОНЕЦ КАК Док1 |
|||
13
Fragster
гуру
18.06.14
✎
12:58
|
(12) мимо
|
|||
14
Крошка Ру
18.06.14
✎
12:59
|
(13) ???
Мы в морской бой играем? |
|||
15
Maxus43
18.06.14
✎
13:01
|
(14) попал!
|
|||
16
Maxus43
18.06.14
✎
13:03
|
можно поидее ГДЕ ТИПЗНАЧЕНИЯ(Объект) В (&ТИПЫ)
но опять же надо смотреть во что превратится в скуле |
|||
17
DexterMorgan
18.06.14
✎
13:04
|
Поддерживаю (12), эта рекомендация еще Рупасова в статье на kb по оптимизации запросов
|
|||
18
Широкий
18.06.14
✎
13:06
|
У тебя проблема не в составном типе а в условии "ИЛИ" - оно не дает индексу в полную силу работать.
Если записей ну очень много - можно сделать запрос из 4 объединений по каждому виду документа |
|||
19
Maxus43
18.06.14
✎
13:06
|
(17) эта хрень нужна когда ты из поля составного типа хочешь вытащить реквизит объекта. Простое приведение к типу самого поля почти ниячего не даст, только уменьшит количество типов на выходе в колонке, но оно так и будет составным
|
|||
20
DexterMorgan
18.06.14
✎
13:07
|
(19) ну их же будет меньше
|
|||
21
Fragster
гуру
18.06.14
✎
13:07
|
(20) и что?
|
|||
22
Широкий
18.06.14
✎
13:07
|
(17) Он не получает же из документов какую то инфу. Выразить то зачем?
|
|||
23
H A D G E H O G s
18.06.14
✎
13:09
|
clustered index seek. Расслабьтесь.
|
|||
24
Maxus43
18.06.14
✎
13:10
|
(20) технически разницы нет, что 5 типов, что 150. Разница только при обращении к реквизитам, а тут такой задачи нет, и все реверансы эти бессмысленны...
|
|||
25
DexterMorgan
18.06.14
✎
13:10
|
(18) Да кстати, вместо или можно попробовать использовать объединение
|
|||
26
H A D G E H O G s
18.06.14
✎
13:11
|
(19) (19) Эта хрень нужна, чтобы сервер 1С не задумывался на пару секунд при первом выполнении запроса при получении составного реквизита.
Именно сервер 1С. |
|||
27
H A D G E H O G s
18.06.14
✎
13:11
|
(25) Кхм-кхм. см (23). Курим. Ждем автора.
|
|||
28
Maxus43
18.06.14
✎
13:13
|
(26) в данном конкретном случае. При получении реквизита она нужна для другого, чтоб ненужные соединения со всеми типами не делать
|
|||
29
H A D G E H O G s
18.06.14
✎
13:14
|
(28) Спс, кэп.
|
|||
30
Широкий
18.06.14
✎
13:14
|
(23) Проверял? Может все-таки scan?
|
|||
31
Maxus43
18.06.14
✎
13:15
|
(29) дак ты как будто бы опроверг про "реквизиты", и автор может подумать лишнего)
|
|||
32
H A D G E H O G s
18.06.14
✎
13:15
|
(30) Проверял. 1С не тупее паровоза.
WHERE ((((T1._Fld24334_TYPE = 0x08 AND T1._Fld24334_RTRef = 0x00000104) OR (T1._Fld24334_TYPE = 0x08 AND T1._Fld24334_RTRef = 0x00000147)) OR (T1._Fld24334_TYPE = 0x08 AND T1._Fld24334_RTRef = 0x0000015F)) OR (T1._Fld24334_TYPE = 0x08 AND T1._Fld24334_RTRef = 0x000001C8)) keyword: T1._Fld24334_TYPE = 0x08 |
|||
33
Крошка Ру
18.06.14
✎
13:17
|
(25) Разница в том, что у тебя в запросе будет левое соединение с таблицами ВСЕХ типов составного объекта или только те, которые мы явно укажем. А уж обращаемся мы к реквизиту объекта или нет - без разницы
|
|||
34
Крошка Ру
18.06.14
✎
13:17
|
(33) к (24)
|
|||
35
Fragster
гуру
18.06.14
✎
13:17
|
(33) откуда там будет соединение-то?
|
|||
36
Широкий
18.06.14
✎
13:18
|
(32) Ты план запроса смотри
|
|||
37
Широкий
18.06.14
✎
13:19
|
+36 а лучше покажи
|
|||
38
Maxus43
18.06.14
✎
13:19
|
(33) не будет никаких соединений без залезания "внутрь" составного типа за реквизитом
|
|||
39
Крошка Ру
18.06.14
✎
13:20
|
(35) Хотя вообще, да, из регистра же данные тащим
|
|||
41
H A D G E H O G s
18.06.14
✎
13:24
|
StmtText
Clustered Index Seek(OBJECT:([database].[dbo].[_InfoRg24333].[_InfoR24333_ByDims_RN] AS [T1]), SEEK:([T1].[_Fld24334_TYPE]=0x08 AND [T1].[_Fld24334_RTRef]=0x00000104 OR [T1].[_Fld24334_TYPE]=0x08 AND [T1].[_Fld24334_RTRef]=0x00000147 OR [T1].[_Fld24334_TYPE]=0x08 AND [T1].[_Fld24334_RTRef]=0x0000015F OR [T1].[_Fld24334_TYPE]=0x08 AND [T1].[_Fld24334_RTRef]=0x000001C8) ORDERED FORWARD) |
|||
42
Жан Пердежон
18.06.14
✎
13:26
|
а где вариант с ОБЪЕДИНИТЬ ВСЕ?
|
|||
43
Широкий
18.06.14
✎
13:26
|
(41) Тогда все, в (0) запрос уже оптимален
|
|||
44
MrStomak
18.06.14
✎
13:34
|
(41) Ты понимаешь, что индекс здесь используется по признаку Ссылка, а не по признаку Документ.чтото ?
|
|||
45
H A D G E H O G s
18.06.14
✎
13:37
|
(44) Чего?
|
|||
46
H A D G E H O G s
18.06.14
✎
13:38
|
(44) Я не понял твоего каммента.
|
|||
47
Fragster
гуру
18.06.14
✎
13:38
|
(45) MrStomak просто не в курсе, как хранятся данные в базе 1с и какие там индексы
|
|||
48
MrStomak
18.06.14
✎
13:47
|
(47) В курсе
(46) Из твоего поста я понял (32), что используется предикат по полю T1._Fld24334_TYPE в физическом операторе. Это был бы частичный поиск по индексу, так как нужно использование двух полей. Проверил сам - в предикатах поиска присутствует также второе поле. |
|||
49
H A D G E H O G s
18.06.14
✎
13:52
|
(48)
Ты очень сложно выражаешь свои мысли. Давай я проще: 1С наложила условие на Класс метаданных (справочник/документ/ПВХ/БизнесПроцесс) и на тип класса метаданных (Документ.ВводОстатков/Документ.РТУ). И это прекрасно. Не наложи она условия на Класс метаданных (_Fld24334_TYPE]=0x08) индекс бы пошел лесом. |
|||
50
H A D G E H O G s
18.06.14
✎
13:58
|
Понапридумывали тут.. (ворчит)
http://www.sql.ru/articles/mssql/2007/012302seekpredicates.shtml Для следующих ниже примеров, мы можем использовать индекс для удовлетворения условий предиката для столбца "a", но не для столбца "b". В этих случаях потребуется остаточный предикат: a > 100 and b > 100 a like 'abc%' and b = 2 |
|||
51
H A D G E H O G s
18.06.14
✎
13:59
|
"потребуется остаточный предикат"
Объясните мне, как это по русски. indexseek+indexscan? как это выглядит в профайлере? |
|||
52
H A D G E H O G s
18.06.14
✎
14:00
|
Вот так правильно условия:
a > 100 and b > 100 a like 'abc%' and b = 2 |
|||
53
MrStomak
18.06.14
✎
14:00
|
(51) В профайлере это выглядит как разделение в тексте плана запроса SEEK и WHERE, но всё это будет index seek
|
|||
54
MrStomak
18.06.14
✎
14:02
|
(49) Если преобразовать текст запроса из (0) так:
ВЫБРАТЬ ВерсииОбъектов.Объект, ВерсииОбъектов.НомерВерсии, ВерсииОбъектов.ВерсияОбъекта, ВерсииОбъектов.АвторВерсии, ВерсииОбъектов.ДатаВерсии ИЗ РегистрСведений.ВерсииОбъектов КАК ВерсииОбъектов ГДЕ (ВерсииОбъектов.Объект ССЫЛКА Документ.ВводНачальныхОстатковОС ИЛИ ВерсииОбъектов.Объект ССЫЛКА Документ.ИзменениеСпособовОтраженияРасходовПоАмортизацииОС ИЛИ ВерсииОбъектов.Объект ССЫЛКА Документ.КорректировкаЗаписейРегистров ИЛИ ВерсииОбъектов.Объект ССЫЛКА Документ.ПринятиеКУчетуОС или версииобъектов.объект = значение(Документ.ПринятиеКУчетуОС.ПустаяСсылка)) ,то тоже будет Index seek, тоже будут в условии запроса все поля, но при этом будет использоваться только индекс по первому полю TYPE. Я из твоего поста подумал, что именно это и произошло. |
|||
55
H A D G E H O G s
18.06.14
✎
14:03
|
(53) Счаст пытаюсь представить себе физический смысл "a > 100 and b > 100" для b дерева и не понимаю проблемы.
|
|||
56
MrStomak
18.06.14
✎
14:05
|
(55) Я не понял поста (52) Это к чему?
|
|||
57
H A D G E H O G s
18.06.14
✎
14:06
|
(56) Я слитно написал их, эти 2 варианта условий в (50), исправился.
|
|||
58
MrStomak
18.06.14
✎
14:11
|
(55) Как ты это сделаешь, кроме как сначала выбрав все записи где а>100, а потом, уже из них, где b>100?
|
|||
59
H A D G E H O G s
18.06.14
✎
14:16
|
(58) Индексное дерево для 2-х полей строится одно?
|
|||
60
H A D G E H O G s
18.06.14
✎
14:16
|
(58) Или для каждого поля - отдельное дерево. Для полей, в составном индексе.
|
|||
61
MrStomak
18.06.14
✎
14:19
|
(60) Как может быть несколько деревьев в индексе? Одно дерево.
|
|||
62
H A D G E H O G s
18.06.14
✎
14:21
|
Ядро СУБД Cach? использует B+-деревья для хранения данных...
После имени глобала в круглых скобках через запятую указывается произвольное количество индексов. Компилятор осуществляет преобразование всего множества индексов в ключ B+-дерева... Вот. Тоесть, при выполнении условия "a > 100 and b > 100", это условие должно преобразоваться в условие вида "key>100" |
|||
63
H A D G E H O G s
18.06.14
✎
14:22
|
И потом выполнить типовой поиск по B+ дереву.
|
|||
64
H A D G E H O G s
18.06.14
✎
14:23
|
Хотя нет.
|
|||
65
H A D G E H O G s
18.06.14
✎
14:24
|
Ключом B+ дерева тут будет скорее всего Структура с элементами
[a,b] Или хэш. Блин. |
|||
66
H A D G E H O G s
18.06.14
✎
14:27
|
Нет. Нельзя хэш. Нам нужны исходные данные.
|
|||
67
H A D G E H O G s
18.06.14
✎
14:27
|
Например, для получения данных через индекс.
|
|||
68
MrStomak
18.06.14
✎
14:32
|
Хэш используется для соединений, в индексе мы последовательно сверяем куски известного ключа со значениями для каждой "развилки".
|
|||
69
H A D G E H O G s
18.06.14
✎
14:33
|
(68) Ты, скорее всего, меня не понял.
|
|||
70
H A D G E H O G s
18.06.14
✎
14:36
|
(68)
wiki:B-%E4%E5%F0%E5%E2%EE#mediaviewer/Файл:B-tree-definition.png Что находиться в КЛЮЧЕ корневого узла k1, индексного дерева для полей а, b таблицы, в которой поле a имеет значения от 0 до 100, поле b имеет значение от 100 до 200. Я вот думаю - там структура со значениями 50,100 |
|||
71
H A D G E H O G s
18.06.14
✎
14:38
|
||||
72
MrStomak
18.06.14
✎
14:49
|
(70) Почему 50,100? Там должна быть конкатенация значений всех ключей.
|
|||
73
MrStomak
18.06.14
✎
14:49
|
(70) Точнее, всех полей.
|
|||
74
H A D G E H O G s
18.06.14
✎
14:51
|
(72) как потом вытаскивать данные, ну, допустим при indexscan?
|
|||
75
H A D G E H O G s
18.06.14
✎
14:52
|
(72) Как сконкатенировать date и nvarchar?
|
|||
76
MrStomak
18.06.14
✎
14:52
|
(74) первые столько-то байт - первое поле, вторые столько-то байт - второе поле
|
|||
77
H A D G E H O G s
18.06.14
✎
14:53
|
(76) Тупо побайтовый набор? Это и есть Структура.
|
|||
78
MrStomak
18.06.14
✎
14:55
|
(77) я думал, у тебя 50,100 означало разные узлы, где значение только а, а не структуру со значениями а и б.
|
|||
79
MrStomak
18.06.14
✎
14:55
|
Ну да, так будет узел выглядеть, 50,100
|
|||
80
H A D G E H O G s
18.06.14
✎
14:56
|
(79) Отлично!
|
|||
81
MrStomak
18.06.14
✎
15:03
|
добравшись до узла , где a=100, мы знаем, что всё остальное точно удовлетворяет предикату a>100 и отбираем это. Если мы продолжаем поиск, и находим удовлетворение условию b>100, то это совсем не означает, что все остальные строки удовлетворяют этому условию! Потому что там дальше может быть а=110, б=2, следующая запись а=110 б = 112, потом опять а=111 б = 1. Дальше как ни крути, нужно выполнять скан всех строк индекса.
|
|||
82
H A D G E H O G s
18.06.14
✎
15:04
|
(81) Стоп. А разве дерево не отсортировано?
|
|||
83
wade25
18.06.14
✎
15:05
|
Соединяй правым соединение с таблицами этих документов, будет отбор на уровне SQL, отработает быстро.
|
|||
84
MrStomak
18.06.14
✎
15:05
|
(82) Отсортировано. Вот тебе порядок - 110 2, 110 112, 111, 1.
Это всё в порядке сортировки побайтовой конкатенации значений полей. |
|||
85
MrStomak
18.06.14
✎
15:06
|
В B-дереве чтобы выполнять поиск по всем полям у нас необходимое условие, чтобы предикаты на все поля, кроме последнего, были на эквивалентность.
|
|||
86
H A D G E H O G s
18.06.14
✎
15:07
|
(84) таймаут! Пошел думать.
|
|||
87
H A D G E H O G s
18.06.14
✎
15:08
|
(84) Почему то мне кажется, что сортировка будет не по конкатенации байтов, а по значения полей.
|
|||
88
H A D G E H O G s
18.06.14
✎
15:08
|
а по значения полей.-> а по значениям полей.
|
|||
89
MrStomak
18.06.14
✎
15:08
|
(83) *грустно смотрит*
|
|||
90
H A D G E H O G s
18.06.14
✎
15:08
|
В корне у нас должны быть серединки диапазонов.
|
|||
91
MrStomak
18.06.14
✎
15:08
|
(88) какая разница?
|
|||
92
H A D G E H O G s
18.06.14
✎
15:09
|
Все. Это для меня слишком сложно. Мне нужно на бумажке начертить дерево и карандашиком поискать по нему.
|
|||
93
wade25
18.06.14
✎
15:10
|
(89) Пробовал, что бы критиковать? Мб не так причину скорости выполнения написал, но это работает ;)
|
|||
94
MrStomak
18.06.14
✎
15:10
|
(90) Ключ один, какие серединки?
|
|||
95
MrStomak
18.06.14
✎
15:10
|
(93) тут уже профайлером выяснили, что идет индекс сик по всем условиям.
|
|||
96
H A D G E H O G s
18.06.14
✎
15:11
|
(94) Ключ один физически, состоит из 2-х частей логически. Я же привел пример со структурой
[50,100] |
|||
97
MrStomak
18.06.14
✎
15:11
|
(92) Не рассматривай а и б как разные ключи. Это один ключ, и он отсортирован.
|
|||
98
H A D G E H O G s
18.06.14
✎
15:12
|
50 - серединка диапазона [0..100] для поля a
100 - серединка диапазона [0..200] для поля b |
|||
99
H A D G E H O G s
18.06.14
✎
15:13
|
(97) Тоесть, в корневом узле, значение ключа не [50,100] ?
|
|||
100
MrStomak
18.06.14
✎
15:13
|
(98) нету отдельного диапазона для поля б
|
|||
101
MrStomak
18.06.14
✎
15:14
|
(99) Наверху дерева первое значение, то есть 0,100
|
|||
102
MrStomak
18.06.14
✎
15:15
|
дальше узлы нормализованно распределяются
|
|||
103
H A D G E H O G s
18.06.14
✎
15:15
|
(100) При построении индекса - строится побайтовая конкатенация, сортируется, выбирается середина, ее значение записывается в структуру ключа корневого узла?
|
|||
104
MrStomak
18.06.14
✎
15:15
|
при этом вторая часть ключа нам бесполезна
|
|||
105
H A D G E H O G s
18.06.14
✎
15:16
|
(101) Посмотри на схемку http://commons.wikimedia.org/wiki/File:B-tree-definition.png#mediaviewer/Файл:B-tree-definition.png
Там в корневом узле - значение середины диапазона. И алгоритм поиска - именно по тому, больше или меньше искомое значение значению ключа. В зависимости от этого - идем по нужным потомкам - ветвям. |
|||
106
MrStomak
18.06.14
✎
15:20
|
(105) ты прав, там середина будет.
|
|||
107
H A D G E H O G s
18.06.14
✎
15:20
|
(106) Фух... Продолжим...
(103) - Это все так? |
|||
108
MrStomak
18.06.14
✎
15:20
|
Ну и середина эта определяется как среденее значение сконкатенированного ключа.
|
|||
109
MrStomak
18.06.14
✎
15:21
|
Да
|
|||
110
H A D G E H O G s
18.06.14
✎
15:21
|
(108) Среднее значение или значение середины диапазона?
|
|||
111
MrStomak
18.06.14
✎
15:22
|
(1068) Запись за номером N/2 в отсортированном массиве, где N- число разных ключей.
|
|||
112
MrStomak
18.06.14
✎
15:23
|
Даже не разных, есть варианты неуникального индекса наверное.
|
|||
113
H A D G E H O G s
18.06.14
✎
15:24
|
(111) т.е. Значение середины диапазона. Ок.
|
|||
114
H A D G E H O G s
18.06.14
✎
15:24
|
(111) Вот теперь все ясно.
|
|||
115
H A D G E H O G s
18.06.14
✎
15:24
|
Вот теперь понятен смысл последующего indexscan по b>100 после indexseek по a>100
|
|||
116
MrStomak
18.06.14
✎
15:25
|
т.е. в корневом узле значение 50,100 может получиться при равномерном рампределении, т.е. одному ключу а соответствует уникальный ключ б.
|
|||
117
H A D G E H O G s
18.06.14
✎
15:25
|
Я думал, дерево отсортировано по значениям полей a и b, а не по их побайтовой конкатенации.
|
|||
118
MrStomak
18.06.14
✎
15:26
|
(116) Или там у тебя б=100 это начало диапазона.. Такое уже будет от везения зависеть.
|
|||
119
MrStomak
18.06.14
✎
15:28
|
(117) Ну так ты спросил вроде бы для этого - одно или несколько деревьев? Нельзя отсортировать один ключ двумя способами.
|
|||
120
MrStomak
18.06.14
✎
15:28
|
(119) Точнее, в один момент времени он будет отсортирован только одним образом.
|
|||
121
H A D G E H O G s
18.06.14
✎
15:28
|
(118) Это очень редкий шанс для больших таблиц.
|
|||
122
H A D G E H O G s
18.06.14
✎
15:30
|
(119) Я вообще не знал про физику хранения составных индексов.
|
|||
123
Кир Пластелинин
18.06.14
✎
15:36
|
мне кажется автор темы сейчас очень грустно на нее смотрит) ну и да - закладка.
|
|||
124
H A D G E H O G s
18.06.14
✎
15:44
|
Для (70) правка
поле b имеет значение от 100 до 200. -> поле b имеет значение от 0 до 200. |
|||
125
Bober
18.06.14
✎
15:56
|
(0) самый лучший вариант оптимизации это не выгребать в запросе поле версия объекта.
|
|||
126
H A D G E H O G s
18.06.14
✎
16:01
|
(125) Он и не выгребает.
|
|||
127
H A D G E H O G s
18.06.14
✎
16:01
|
1С не тупее паровоза.
|
|||
128
Bober
18.06.14
✎
16:02
|
(126) а это тогда кто ВерсииОбъектов.ВерсияОбъекта
|
|||
129
H A D G E H O G s
18.06.14
✎
16:11
|
(128) Это будет потом, скорее всего, при Хранилище.Получить().
|
|||
130
Bober
18.06.14
✎
16:12
|
(0) вторая проблема в том, что если это выводится в тз или еще как-то (не через СКД), то система будет делать запрос вида:
SELECT T1._IDRRef, T1._Number, T1._Date_Time FROM _Document128 T1 WITH(NOLOCK) WHERE T1._IDRRef = P1 для получения представления для каждой ссылки. |
|||
131
Bober
18.06.14
✎
16:12
|
(129) это идет сразу, если через запрос, то сервер 1с все это выгребает и преобразовывает с свои объекты.
|
|||
132
H A D G E H O G s
18.06.14
✎
16:22
|
(131) Да, ты прав, не заметил это поле в профайлере.
|
|||
133
H A D G E H O G s
18.06.14
✎
16:22
|
Но как бы, скорее всего, это то и нужно автору.
|
|||
134
Bober
18.06.14
✎
16:30
|
(133) если идет обработка в цикле версий, то скорее всего это сервисная обработка и вопрос скорости выполнения не стоял. Скорее всего это какой-то отчет или еще что-то.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |