|
Как ускорить работу с регистром бухгалтерии | ☑ | ||
---|---|---|---|---|
0
Coldboy
23.12.13
✎
12:37
|
Здравствуйте. СЛышал есть такая проблема, что сами запросы медленно работаю с регистром бухгалтерии, ну то есть не быстро даже, простые по сравнению с регистром накопления. Есть ли методы по ускорению, Хотя бы частичному? Увидел такие вещи как УстновитьЧтоТоСИтогами, но не понял к чему это? Как вообще быть, чтобы допустим запрос работал по шустрее
Запрос.Текст = "ВЫБРАТЬ | ХозрасчетныйОстатки.КоличествоОстаток |ИЗ | РегистрБухгалтерии.Хозрасчетный.Остатки( | &КонПериода, | Счет В ИЕРАРХИИ (&Счет), | , | Организация = &Организация | И Субконто1 = &Номенклатура | И Субконто2 = &Склад) КАК ХозрасчетныйОстатки"; да и другие обращнения ... |
|||
1
Coldboy
23.12.13
✎
12:57
|
up
|
|||
2
ДенисЧ
23.12.13
✎
12:58
|
на субконты ВЫРАЗИТЬ поставь
|
|||
3
Coldboy
23.12.13
✎
12:59
|
(2) зачем выразить?
и на такой тоже Запрос.Текст = "ВЫБРАТЬ | ЕСТЬNULL(ХозрасчетныйОстатки.КоличествоОстатокДт, 0) КАК КоличествоОстатокДт |ИЗ | РегистрБухгалтерии.Хозрасчетный.Остатки( | &МоментВремени, | Счет = &Счет, | &видысубконто, | Организация = &Организация | И Субконто1 = &Субконто1 | И Субконто2 = &Субконто2) КАК ХозрасчетныйОстатки"; и будет быстрее? |
|||
4
ДенисЧ
23.12.13
✎
13:00
|
(3) А ты поставь и проверь....
|
|||
5
zak555
23.12.13
✎
13:00
|
(3) зачем ЕСТЬNULL ?
|
|||
6
Coldboy
23.12.13
✎
13:01
|
(5) ну как, если null То сделать 0, если не null то пусть будет количествоОстатокДт тута на форуме утверждали это, неправильно?
|
|||
7
Coldboy
23.12.13
✎
13:01
|
(4) еще бы знать, как правильно сделать Выразить на субконто
|
|||
8
bolobol
23.12.13
✎
13:04
|
Кхм... А с чего Остатки должны вернуть запись с отсутствующим значением запрашиваемого значения? Вернутся только те записи, по которым есть остаток, а если кривизна в таблице, то получите 0, конечно же, но это не будет правильным данным.
|
|||
9
ДенисЧ
23.12.13
✎
13:04
|
(7) ВЫРАЗИТЬ(Субконто КАК Справочник.Номенклатура)
И вообзе продам кнопку F1 в конфигураторе. |
|||
10
MKZM
23.12.13
✎
13:05
|
(7) Приведи субконто к нужным типам
|
|||
11
ИС-2
naïve
23.12.13
✎
13:07
|
1) в иерархии убрать
2) а самое главное сделать пересчет итогов на SQL вопрос на засыпку. Регистры бухгалтерии не закрываются же? |
|||
12
bolobol
23.12.13
✎
13:11
|
ВЫРАЗИТЬ требуется для того, чтобы создавая виртуальную таблицу не тянуть множество заведомо ненужных данных. А система сама сравнение произведёт по правильной колонке составного поля.
Во всяком случае, в условии соединения - команда ВЫРАЗИТЬ вешает базу намертво отчётом, что без ВЫРАЗИТЬ выполняется секунд за 30. На более быстрых отчётах я и не догадался ни разу проверить. А вот когда составное поле уже отбирается и по нему новый индекс создаётся, то для оптимизации количества колонок разного типа составного объекта - ВЫРАЗИТЬ и эффективно может быть применимо. |
|||
13
bolobol
23.12.13
✎
13:12
|
(11) Отличный вопрос! Чего ж базы не растут геометрически тогда? ))
|
|||
14
Coldboy
23.12.13
✎
13:13
|
(9) спасибо уже разобрался)
(11) почему убрать, если на счете 41.01 или 41.02 могут быть данные и так сразу не угадаешь, так вроде разработчики Раруса заложили что массив счетов, из 41 или 10. |
|||
15
Coldboy
23.12.13
✎
13:18
|
(12) составной тип субконто, регистратор используется, хотя значения, заведомо даю уже нужные, типа справочники.номенклатура или тд. щас попробую с выразить. так же и остатки беру тоже срезы даю.
|
|||
16
Coldboy
23.12.13
✎
13:19
|
и не скажу, что стало быстрее исполняться
"ВЫБРАТЬ | ХозрасчетныйОстатки.КоличествоОстаток |ИЗ | РегистрБухгалтерии.Хозрасчетный.Остатки( | &КонПериода, | Счет В ИЕРАРХИИ (&Счет), | , | Организация = &Организация | И (ВЫРАЗИТЬ(Субконто1 КАК Справочник.Номенклатура)) = &Номенклатура | И (ВЫРАЗИТЬ(Субконто2 КАК Справочник.Склады)) = &Склад) КАК ХозрасчетныйОстатки" |
|||
17
Лефмихалыч
23.12.13
✎
13:20
|
отбор по видам субконто установить в параметрах ВТ
|
|||
18
piter3
23.12.13
✎
13:21
|
(16) выбери сразу нужные счета. итоги пересчитай, обслуживание делается?
|
|||
19
Лефмихалыч
23.12.13
✎
13:21
|
+(17) это ТРЕТИЙ параметр. Тот самы, про которыы, (0), ни чорта не знаешь
|
|||
20
Sammo
23.12.13
✎
13:24
|
(14) Тогда сначала отбираешь счета, а затем в.
В иерархии может привести к не очень красивом плану запроса. |
|||
21
МихаилМ
23.12.13
✎
13:24
|
(17)
отбот по видам для оборотов |
|||
22
ИС-2
naïve
23.12.13
✎
13:28
|
(13) т.е закрываются? Или закрываются при закрытии месяца?
|
|||
23
bolobol
23.12.13
✎
13:35
|
(22) Тут, походу, необходимо определиться в терминах. Закрытие месяца - операция пользовательского интерфейса, будут делать - будут закрывать определённые счета, не будут - счета станут накопительными)
|
|||
24
ИС-2
naïve
23.12.13
✎
13:39
|
(23) понятно
|
|||
25
acsent
23.12.13
✎
13:40
|
Этот запрос ничем уже не ускоришь.
|
|||
26
hhhh
23.12.13
✎
13:51
|
(16) это когда с точкой Субконто1.Наименование например, тогда нужно ВЫРАЗИТЬ, а так ВЫРАЗИТЬ не нужно
|
|||
27
mzelensky
23.12.13
✎
13:57
|
(16) Можешь еще для эксперимента поиграться порядком условий:
Организация = &Организация И (ВЫРАЗИТЬ(Субконто1 КАК Справочник.Номенклатура)) = &Номенклатура И (ВЫРАЗИТЬ(Субконто2 КАК Справочник.Склады)) = &Склад Т.е. меняешь условия местами и смотришь как меняется производительность (через замер). У меня на одном запросе из большой таблицы очень значительная разница была. |
|||
28
mzelensky
23.12.13
✎
13:58
|
(26) Ты ошибаешься, как мне кажется.
Если Параметры имеет сосавной тип данных (а ты юзаешь ток один из них), то ВЫРАЗИТЬ нужно обязательно. |
|||
29
Coldboy
23.12.13
✎
14:11
|
(28) а есть вариант отключение управления итогами или как то, так что ускорит еще работу с регистром бухгалтерии.
(17) а ускорит ли работу этого запроса? |
|||
30
acsent
23.12.13
✎
14:16
|
(27) Такие игрище не могут помочь в принципе.
|
|||
31
acsent
23.12.13
✎
14:16
|
(28) Только для выбора через точку. Для сравнения не обязательно
|
|||
32
acsent
23.12.13
✎
14:17
|
(29) без итогов не получшь остатки
|
|||
33
mzelensky
23.12.13
✎
14:18
|
(30) Ну как сказать. Я замерял - получалась ощутимая разница. Но ток я это на РС делал.
|
|||
34
MrStomak
23.12.13
✎
14:19
|
(25) "В иерархии" всегда создает проблемы, т.к. это подзапрос...
|
|||
35
Coldboy
23.12.13
✎
14:21
|
(34) ну сильно нагружает скорость работы запроса?
|
|||
36
MrStomak
23.12.13
✎
14:22
|
(33) Когда идёт разыменование через точку субконто, то СУБД делает 100500 соединений по всем возможным типам. При "выразить" только 1 соединение. Без разыменования соединений вообще нет.
|
|||
37
acsent
23.12.13
✎
14:24
|
(33) порядок полей может в регистре иметь дело.
И то несколько ты покрываешь первые поля условием |
|||
38
MrStomak
23.12.13
✎
14:24
|
(35) Иногда очень сильно, иногда никак. Система не знает сколько записей вернет В ИЕРАРХИИ, в результате может использоваться scan вместо seek.
|
|||
39
Coldboy
23.12.13
✎
14:26
|
так вопрос, есть ли инструкция еще по оптимтизация SQL Server 2008 R2, там еще мб с настройками поиграть?
|
|||
40
Armando
23.12.13
✎
14:27
|
(0) Какой физический порядок субконто у счетов, которые попадают в условие В ИЕРАРХИИ (&Счет)?
|
|||
41
Coldboy
23.12.13
✎
14:27
|
Номенклатура, склада
у 41 счета |
|||
42
Maxus43
23.12.13
✎
14:30
|
кстати периодичсеки исправляют, например в последней 8.2 пофиксили
Проблема: Запросы, использующие виртуальную таблицу движений с субконто регистра бухгалтерии, выполняются неоправданно продолжительное время. |
|||
43
Coldboy
23.12.13
✎
14:30
|
(42) у меня остатки, а не движения субконто :(
|
|||
44
Maxus43
23.12.13
✎
14:33
|
(43) я для примера - от платформы тоже может зависеть + не забываем про РЛС если есть... по эту случаю уже нафлудили впринципе,
|
|||
45
Coldboy
23.12.13
✎
14:38
|
1С:Предприятие 8.2 (8.2.18.109) версия платформы.
|
|||
46
Coldboy
23.12.13
✎
14:54
|
РЛС да вроде нет.
|
|||
47
Coldboy
23.12.13
✎
16:11
|
запрос с ВЫРАЗИТЬ, выполнился на 40% дольше чем просто было ...
|
|||
48
MadHead
23.12.13
✎
16:29
|
(47) тут особо тормозить нечему. Попробуйте вот так
ВЫБРАТЬ Хозрасчетный.Ссылка КАК Ссылка ПОМЕСТИТЬ врем ИЗ ПланСчетов.Хозрасчетный КАК Хозрасчетный ГДЕ Хозрасчетный.Ссылка В(&Счета) ИНДЕКСИРОВАТЬ ПО Ссылка ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ХозрасчетныйОстатки.КоличествоОстаток ИЗ РегистрБухгалтерии.Хозрасчетный.Остатки( &КонПериода, Счет В (ВЫБРАТЬ врем.Ссылка ИЗ врем КАК врем), &ВидыСубконто, Организация = &Организация И Субконто1 = &Номенклатура И Субконто2 = &Склад) КАК ХозрасчетныйОстатки дополнительно надо передать виды субконто |
|||
49
MadHead
23.12.13
✎
16:32
|
И рекомендую посмотреть план запроса. Везде ли index seek
|
|||
50
MadHead
23.12.13
✎
16:38
|
запрос точно не в цикле используется? )
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |