|
Ускорить получение остатков | ☑ | ||
---|---|---|---|---|
0
Ivan Bezdomnyi
31.03.14
✎
07:25
|
Приветствую!
Подскажите, можно ли каким-то образом ускорить получение остатков при проведении? РЕГИСТР НАКОПЛЕНИЯ "ОстаткиТоваров" (порядок измерений и ресурсов сохранен): Измерения - Номенклатура (+Индексировать) `около 100'000 наименований - Подразделение `около 20 штук - Организация `несколько - КатегорияТовара `несколько Ресурсы - Количество - Сумма ЗАПРОС "ВЫБРАТЬ | ТоварныйЧекТовары.Номенклатура КАК Номенклатура, | ТоварныйЧекТовары.Номенклатура.Производитель КАК Производитель, | ТоварныйЧекТовары.КатегорияТовара КАК КатегорияТовара, | ТоварныйЧекТовары.Количество КАК Количество, | ТоварныйЧекТовары.Цена КАК Цена, | ТоварныйЧекТовары.Всего КАК Всего, | ТоварныйЧекТовары.Сумма, | ТоварныйЧекТовары.Акция |ПОМЕСТИТЬ ВТ |ИЗ | Документ.ТоварныйЧек.Товары КАК ТоварныйЧекТовары |ГДЕ | ТоварныйЧекТовары.Ссылка = &Ссылка |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | ВТ.Номенклатура, | ВТ.Производитель, | ВТ.КатегорияТовара, | ВТ.Количество, | ВТ.Цена, | ВТ.Всего, | ВТ.Сумма, | ВТ.Акция, | ЕСТЬNULL(ОстаткиТоваровОстатки.КоличествоОстаток, 0) КАК КоличествоОстаток, | ЕСТЬNULL(ОстаткиТоваровОстатки.СуммаОстаток, 0) КАК СуммаОстаток |ИЗ | ВТ КАК ВТ | ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ОстаткиТоваров.Остатки( | &Момент, | Номенклатура В | (ВЫБРАТЬ | ВТТовары.Номенклатура | ИЗ | ВТ КАК ВТТовары) | И Подразделение = &Подразделение | И Организация = &Организация) КАК ОстаткиТоваровОстатки | ПО ВТ.Номенклатура = ОстаткиТоваровОстатки.Номенклатура | И ВТ.КатегорияТовара = ОстаткиТоваровОстатки.КатегорияТовара"; |
|||
1
Wobland
31.03.14
✎
07:29
|
Номенклатура В
| (ВЫБРАТЬ различные как минимум |
|||
2
Ivan Bezdomnyi
31.03.14
✎
07:42
|
(1) минимум не помогает, да и не удивительно, потому что в товарном чеке зачастую 2-3 позиции, и куча проверок, чтоб нельзя было добавить две строки с одинаковой номенклатурой...
|
|||
3
ИС-2
naïve
31.03.14
✎
07:43
|
провести пересчек итогов на SQL - помогает. Проверить как закрыты регистры
|
|||
4
Ivan Bezdomnyi
31.03.14
✎
07:55
|
(3) это Тестирование и исправление через конфигуратор? Или как-то прям через SQL?
|
|||
5
butterbean
31.03.14
✎
07:56
|
(4) да, это ТиИ, но вряд-ли поможет, хотя...
|
|||
6
dk
31.03.14
✎
08:01
|
а просто запрос по остаткам быстро или медленно формируется?
|
|||
7
rphosts
31.03.14
✎
08:12
|
1.сделать второй запрос в пакете в котором отбирать из первого в отдельную таблицу номенклатуру, подразделение, организацию.
2.в условии на ВТ Остатки переписать на (Номенклатура, Подразделение, Организация) В (Выбрать ВТТовары2.Номенклатура, ВТТовары2.Подразделение, ВТТовары2.Организация ......) |
|||
8
Ivan Bezdomnyi
31.03.14
✎
08:13
|
(5) да, ТиИ пробовали - не помогает.
(6) если просто в консоли выполнить этот запрос = 0.047, если убрать соединение с товарным чеком и оставить только по остаткам = 0.015 это, конечно, наверное даже быстро, но просто заказчик когда массовым перепроведением занимается - говорит "хочу быстрее, оптимизируйте!", а мы уже месяц в ответ говорим что дальше уже некуда оптимизировать) |
|||
9
Aleksey
31.03.14
✎
08:14
|
(8) ну так пусть железо апгрейдит
|
|||
10
Wobland
31.03.14
✎
08:15
|
(8) ага, массовое проведение занимается большей частью этим запросом, да?
|
|||
11
Ivan Bezdomnyi
31.03.14
✎
08:22
|
(7) если всё правильно понял - попробовал, тратится чуть больше времени, чем на изначальный
(10) сделал замер производительности - больше 30% времени тратится на этот запрос |
|||
12
Ivan Bezdomnyi
31.03.14
✎
08:26
|
Как-то слышал, что порядок измерений может влиять на скорость, только не помню как. Думал может по этому поводу кто что скажет.
|
|||
13
Ymryn
31.03.14
✎
08:35
|
Попробуй в ВТ проиндексировать по "Номенклатура" + возможно, надо замерять еще и "КатегорияТовара".
|
|||
14
ivanovnm
31.03.14
✎
08:36
|
(0) Засунь отбор по категории товара в виртуальную таблицу
| (Номенклатура, КатегорияТовара) В | (ВЫБРАТЬ | ВТТовары.Номенклатура, | ВТТовары.КатегорияТовара | ИЗ | ВТ КАК ВТТовары) |
|||
15
ivanovnm
31.03.14
✎
08:38
|
(0) Таблицу ВТ проиндексируй по Номенклатуре и Категории товара, хотя если в документах реально по 2-3 строки то вряд ли поможет.
|
|||
16
ivanovnm
31.03.14
✎
08:39
|
(0) Поищи добавленные умельцами подписки на события документа ПриЗаписи(), ОбработкаПроведения(). Если кривые - оптимизируй.
|
|||
17
ivanovnm
31.03.14
✎
08:41
|
(12) По всем измерениям сверху должен быть указан отбор. Тут отбор по всем измерениям присутствует, так что все вроде ок.
|
|||
18
rphosts
31.03.14
✎
08:44
|
(17) нет, нужно что-бы отбор был по первым, т.е. если измерения 1,2,3 то отбор по измерениям 1 + 2 - нормально, а если 2 + 3 - индекс ничем не поможет
|
|||
19
ivanovnm
31.03.14
✎
08:46
|
(18) сверху = по первым, не так выразился. но ведь все ок?
|
|||
20
Ivan Bezdomnyi
31.03.14
✎
08:49
|
(14) ок, так и сделаем.
Ладно, всем спасибо(!), если ни у кого больше замечаний нет, то "теперь мы точно сделали всё что могли") |
|||
21
Alex S D
31.03.14
✎
08:54
|
а использование итогов регистров выключали перед перепроведением?
|
|||
22
Alex S D
31.03.14
✎
08:55
|
смысл оптимизировать этот запрос, если дело не в запросе
|
|||
23
ivanovnm
31.03.14
✎
08:55
|
(20) Ну и еще правилом хорошего тона считается группировка табличной части с суммированием количества, тогда не нужны будут многочисленные проверки на дублирование строк.
|
|||
24
ivanovnm
31.03.14
✎
08:55
|
(22) Как определил что дело не в запросе?
|
|||
25
Alex S D
31.03.14
✎
08:56
|
(24) соотнеси время выполнения запроса со временем проведения документа...
|
|||
26
ivanovnm
31.03.14
✎
08:57
|
(21) Если отключить итоги, то как получить остатки?
|
|||
27
Ivan Bezdomnyi
31.03.14
✎
08:59
|
(21)(22) я не утверждал, что дело в запросе, просто привел и регистр и запрос, и спросил мысли людей)
попробовать УстановитьИспользованиеИтогов()? |
|||
28
Alex S D
31.03.14
✎
08:59
|
(26) хотя да.. тут не прокатит
|
|||
29
ИС-2
naïve
31.03.14
✎
08:59
|
(13) не те объемы для индексирования
|
|||
30
ivanovnm
31.03.14
✎
08:59
|
(25) При проведении документа могут быть десятки обращений к СУБД, никто не говорит что время выполнения запроса и время проведения документа будут совпадать.
|
|||
31
Alex S D
31.03.14
✎
09:00
|
(30) я к тому, что это может не самое узкое место. Замер производительности делался?
|
|||
32
Bober
31.03.14
✎
09:01
|
(0)
1. Выполнили средствами 1с (через конфигуратор) полный пересчет итогов. 2. Выполни перестроение индексов и обновление статистики на SQL сервере. PS странно, зачем в регистр остатков добавили измерение Организация. |
|||
33
Bober
31.03.14
✎
09:03
|
(0) RLS используется?
|
|||
34
Ivan Bezdomnyi
31.03.14
✎
09:03
|
(30) да, писал выше, что больше 30% времени всего перепроведения тратиться на этот запрос..
|
|||
35
Ivan Bezdomnyi
31.03.14
✎
09:06
|
(32) а 2ой пункт именно на SQL сервере надо? Галочка о переиндексации в конфигураторе в Тестирование и исправление - не то?
|
|||
36
Ivan Bezdomnyi
31.03.14
✎
09:07
|
(33) RLS не используется
|
|||
37
ДенисЧ
31.03.14
✎
09:13
|
Я бы лично поймал бы этот запрос в профайлере и покрутил бы его в студии.
Проверил бы на хинты по индексам, на планы выполнения... |
|||
38
Широкий
31.03.14
✎
09:15
|
(0) На мой взгляд, запрос вполне корректный.
Как вариант я бы попробовал сделать без временки. |
|||
39
neckto
31.03.14
✎
09:19
|
(8) У тебя проблема не с проведением одного документа - запрос выполняется быстро, проблема с массовым перепроведением - вот и решай ее. Попробуй реализовать обработку перепроведения таким образом, чтобы запрос к остаткам выполнялся один раз.
|
|||
40
Ivan Bezdomnyi
31.03.14
✎
09:26
|
(39) так то да, но это малореально, потому что перепроводятся не только Товарные чеки, но и все остальные документы. И проведение каждого, оказывает влияние на остатки при проведении следующего..
|
|||
41
neckto
31.03.14
✎
09:49
|
(40) При списании товара по-средней себестоимость не изменяется. Для того, чтобы узнать остаток на момент текущего документа - зачем выполнять запрос к таблице остатков, если известен остаток на начало предыдущего документа и известно, на сколько он уменьшился?
|
|||
42
ivanovnm
31.03.14
✎
09:51
|
Проще тогда на РАУЗ пересесть
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |