Имя: Пароль:
1C
1С v8
Будет ли падать скорость при запросе к справочнику при увеличении числа эл-тов ?
,
0 Длинный Клиент
 
07.12.12
00:11
Ситуация такая.

Есть справочник Номенклатура, пустой.

Грузим в нее мегатаблицу (предположим, на миллион позиций).

Код- автоматом, заполняем артикул.

Когда грузим очередной элемент, делаем запрос к справочнику, а есть ли уже с таким артикулом ? Если есть, пропускаем, не создаем новый.

Пока элементов немного, будет быстро (Запрос проверки существования таких же артикулов).

А когда сотни тысяч, теоретически, сильно тормозить будет запрос ?

Быстрее ли будет опрашивать запросом регистр сведений, и туда писать загруженные артикулы ?
1 H A D G E H O G s
 
07.12.12
00:12
Быстрее ли будет опрашивать запросом регистр сведений, и туда писать загруженные артикулы ?

Монопенисуально.
2 Команданте
 
07.12.12
00:14
проверено на унылых формах, дипенусиальных списах
закономерность неизбежна, вплоть до отказа платформы отрабатывать четно купленные лицензии
3 Команданте
 
07.12.12
00:16
зы
100 тыс позиций, 5 левых запросов, четыре вложенных запроса, 10 параметров, одна иерархия
убивают 8.2 на месте
4 Aleksey
 
07.12.12
00:16
Быстрее будет кэшировать результаты запроса. И сначала искать в кэши, а потом уже запрос к БД и добавления в кэш
5 H A D G E H O G s
 
07.12.12
00:22
Афтор спрашивает про поиск.
6 i-rek
 
07.12.12
00:24
а что, артикулы есть не у каждой позиции ?
7 Длинный Клиент
 
07.12.12
00:26
(6) У каждой. Надо проверять на совпадение. Это я для примера задачу до минимума упростил, чтобы проще было комментировать. В целом, понятно.
8 i-rek
 
07.12.12
00:27
может в код артикул запихнуть. мне кажется что чуточку побыстрее должно быть
9 Mashinist
 
07.12.12
00:28
Откуда грузим? Может сначала уникальный индекс построить и не проверять каждый раз...
10 H A D G E H O G s
 
07.12.12
00:29
http://edu.nstu.ru/courses/saod/file_structure.htm

Оценка сложности по B дереву
O(logt n)

где n - число данных, тоесть количество строк таблицы, t - число ключей в узле дерева.
11 H A D G E H O G s
 
07.12.12
00:31
Тоесть, при линейном увеличении N
время поиска будет возрастать согласно
Logt(N)

t - тоже будет увеличиваться по мере роста числа записей, но далеко не линейно.
12 H A D G E H O G s
 
07.12.12
00:32
t - будет зависеть от самих данных, для которых строиться индекс.

Берем Ексель, строим динамику.
13 H A D G E H O G s
 
07.12.12
00:33
Правда в SQL B+ дерево используется для формирования индексов, но для него формулу не нашел, но вряд ли другая.
14 Длинный Клиент
 
07.12.12
00:33
(9) на самом деле, для 1 линейного списка понятно, в принципе мне ответили, способ придумаю, основная задача не (0), (0) для примера.

(10) Спасибо. Сейчас на практике прикину, обработкой создам элементы+ секундомер подключу.
15 Длинный Клиент
 
07.12.12
00:35
(10) о, юность вспомнил, в универе это разбирали, писали такие деревья с хэш-функциями на с++
16 mih_io
 
07.12.12
01:00
Я тож считаю, что будет конечно дольше, но если индексы сделать, то совсем некритично дольше
17 ERWINS
 
07.12.12
01:24
(10) если найти значение то скорость не будет зависить от размера таблицы и в среднем буде 1-3 обращения
и вообще тут не озвучили скл какой