|
Запросы в небольшом цикле или загрузка в ТЗ до цикла двух БОЛЬШИХ справочников? | ☑ | ||
---|---|---|---|---|
0
ADV
11.06.24
✎
13:20
|
Здравствуйте! Читаю из файла заказ клиента, в нем коды товаров и ГУИДы серий (и все остальное).
Что лучше: использовать для идентификации товаров и серий запросы к СУБД в цикле чтения файла (итераций вероятно будет немного) или до цикла два БОЛЬШИХ справочника (номенклатура и серии) загрузить из СУБД в ТЗ и в цикле искать номенклатуру и серию в этих ТЗ? |
|||
1
Злопчинский
11.06.24
✎
13:24
|
лично я выбрал бы второй вариант. сначала прочитать внешние данные, потом долбиться запросами.
. большие - это 10-100 миллионов записей? |
|||
2
Галахад
гуру
11.06.24
✎
13:28
|
Если серии идентифицируются по ГУИД, зачем с ними делать что-то лишнее?
|
|||
3
ADV
11.06.24
✎
13:32
|
"большие - это 10-100 миллионов записей?" - очень примерно могу предположить, то серий в перспективе может быть до 1 млн , товаров тысяч 100.
|
|||
4
Ногаминебить
11.06.24
✎
13:36
|
Писать как самому удобно и понятно, не забивать голову всякой фигней. Не небольших объемах скорее всего по скорости и не отличить. :)
Если конечно это реальная задача под себя, а не тестовое задание или тиражное решение. ЗЫ: Но вообще третий вариант. Считать файл в ТЗ, потом запросом сцепить его с СУБД через временную таблицу. :) |
|||
5
ADV
11.06.24
✎
13:37
|
"Если серии идентифицируются по ГУИД, зачем с ними делать что-то лишнее?" - что именно "лишнее"? Насколько я понимаю конструкция
Пока ЧтениеJSON.Прочитать() Цикл Если ИмяТекущегоСвойства = "partNumber" Тогда л_Серия = Справочники.СерииНоменклатуры.ПолучитьСсылку(Новый УникальныйИдентификатор(ЧтениеJSON.ТекущееЗначение)); КонецЕсли; КонецЦикла; это запрос к СУДБ в цикле? |
|||
6
Климов Сергей
11.06.24
✎
13:38
|
(4) +1 за третий вариант
|
|||
7
Garykom
гуру
11.06.24
✎
13:38
|
(0) Лучше всего файл заказа прочитать в ТЗ
ТЗ разделить на разумные куски (отдельные ТЗ до 1000 строк) Эти отдельные ТЗ в отдельные фоновые задания В каждом фоновом Передавать ТЗ в запрос как параметр, поместить в ВТ ВТ дозаполнять пакетными запросами ("для идентификации товаров и серий запросы к СУБД") Учесть чтобы не появилось дублей! Особенность ЛЕВОЕ СОЕДИНЕНИЕ, надо хитрости с группировкой/итогами |
|||
8
ADV
11.06.24
✎
13:40
|
"третий вариант" - спасибо за подсказку!
|
|||
9
Garykom
гуру
11.06.24
✎
13:40
|
(4) +1 это самый быстродействующий, но самый сложный в безошибочной реализации вариант
|
|||
10
Garykom
гуру
11.06.24
✎
13:42
|
(8) Имхо напиши сначала тупой запросы в цикле
Отдай клиенту/заказчику - если не устоит, тогда будешь переписывать Переписать легче будет у тебя уже есть загрузка и куски кода/запросов |
|||
11
H A D G E H O G s
11.06.24
✎
14:31
|
(5) Это не запрос в цикле, оставьте так, это нормально.
|
|||
12
unbred
11.06.24
✎
14:38
|
(11) а что это?) (не смотрел профайлер, но примерно представляю))
|
|||
13
Garykom
гуру
11.06.24
✎
14:37
|
(11) В (5) сильно редкий случай с УИДами
Обычно подбирать приходится по артикулам, кодам и прочим сериям |
|||
14
unbred
11.06.24
✎
14:49
|
(11) (13) понял, принял. проверять не буду.(лениво)
|
|||
15
Конструктор1С
13.06.24
✎
10:33
|
Ох уж эти заоптимизаторы. В борьбе с надуманными проблемами с производительностью готовы изговнять весь код и прострелить себе колено
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |