![]() |
|
Очень много записей в справочнике или регистре сведений | ☑ | ||
---|---|---|---|---|
0
Вопросы Задающий
12.06.11
✎
01:08
|
Всем привет! Подскажите плиз, я заметил что при импорте товаров в справочник товары и даже при импорте данных в регистр сведений "цены поставщиков" , если записей справочника много, например около 500 тыс, то 1с жутко тормозит. конфа самописная, но независимо от обработчиков "при открытии" и тп, если все поотключать, все равно все тормозит. с регистром сведений та же беда. дело-таки в конфе или в платформе ? или может в конкретном компе?
|
|||
1
NcSteel
12.06.11
✎
01:24
|
Если конфа в вакууме то должно работать идиально.
|
|||
2
Злобный Фей
12.06.11
✎
01:27
|
Неплохо бы обновить brain.dll и hands.sys
|
|||
3
Immortal
12.06.11
✎
01:29
|
+(2)и не забыть поправить в head.ini=)
|
|||
4
kotletka
12.06.11
✎
02:19
|
(2),(3)а ведь он полез искать их, злые вы
|
|||
5
Lionee
12.06.11
✎
02:34
|
(0)Какая конфа? импорт откуда? платформа ? телепаты спят!
|
|||
6
IamAlexy
12.06.11
✎
02:38
|
справочник клиентов 2.5 млн. записей.. вроде ничо так. работает..
|
|||
7
GROOVY
12.06.11
✎
02:39
|
ИМХО он перебором ищет элементы справочника, чтобы в регистре запись сделать...
|
|||
8
Варвар
12.06.11
✎
03:40
|
у меня всё работает.
|
|||
9
Вопросы Задающий
12.06.11
✎
11:19
|
платформа 8.2.13.205
конфа самописная вапсче, не мной, тормознутая конечно , но не настолько же.... чтобы если я импортировал 500 тыс значений в регистр, простейший причем, очень долго |
|||
10
Вопросы Задающий
12.06.11
✎
11:21
|
импорт из excel, версия серверная
но я пробую сначала на локальном компе просто считываю из екселя в ТЗ, потом из ТЗ делаю набор нужных мне записей (а это практически ВСЕ записи, просто без дублей на всякий случай), и записываю этот набор. и вот это у меня на 500 тыс работает больше 3х часов, хотя в регистре самом никаких процедур типа "призаписи" нету |
|||
11
ДенисЧ
12.06.11
✎
11:22
|
Эм.... Ты одним махом пишешь 500 000 записей? Неудивительно...
По моему опыту - лучше писать кусками. |
|||
12
Вопросы Задающий
12.06.11
✎
11:24
|
например? по 100 тыс?
|
|||
13
IamAlexy
12.06.11
✎
11:24
|
(12) например замерить отладчиком на предмет как на твоем железе и твоей нагрузке будет оптимальнее...
|
|||
14
ДенисЧ
12.06.11
✎
11:25
|
(12) зависит. У меня разные регистры пишутся разными порциями. От 5000 до 25 000.
|
|||
15
Вопросы Задающий
12.06.11
✎
11:26
|
ну это простейший регистр
попробую по 50 тыс. но идея хорошая конечно, спасибо |
|||
16
Вопросы Задающий
12.06.11
✎
11:34
|
за какое время (минимально) можно загрузить 500 тыс записей в регистр сведений, если при записи туда не выполняется никаких условий?
|
|||
17
rs_trade
12.06.11
✎
11:47
|
(0) 500 тыщ это вовсе не большая таблица
|
|||
18
Вопросы Задающий
12.06.11
✎
11:51
|
ну и как максимально быстро такую сохранить? все равно файл считывать надо построчно.. и потом , записывать даже кусками, 500 тыс займет не меньше пары часов
|
|||
19
IamAlexy2
12.06.11
✎
11:52
|
(18) а чо за файл?
|
|||
20
Вопросы Задающий
12.06.11
✎
11:53
|
упссс
файл csv содержит код поставщика, цену, наименование |
|||
21
Вопросы Задающий
12.06.11
✎
11:54
|
надо это просто сохранить в регистре сведений, но там может быть 500 тыс строк... вот я и ищу оптимальный вариант записи
|
|||
22
Вопросы Задающий
13.06.11
✎
23:45
|
записываю записи.. первые 100 тыс идут более-менее быстро.. потом почему-то все идет медленнее, даже если регистр изначально был пуст...
|
|||
23
Лефмихалыч
13.06.11
✎
23:59
|
(0) замер производительности что показывает?
|
|||
24
Вопросы Задающий
14.06.11
✎
00:11
|
(23) как его сделать...?
|
|||
25
Лефмихалыч
14.06.11
✎
00:18
|
(24) Тебе потребуется Некрономикон (обязательно в оригинале), черный петух (живой, одна штука) и кровь младенца. Они у тебя есть?
PS Кто впустил неотесанного неофита? |
|||
26
Лефмихалыч
14.06.11
✎
00:19
|
||||
27
Вопросы Задающий
14.06.11
✎
00:26
|
(26) спасибо
|
|||
28
Злопчинский
14.06.11
✎
00:28
|
потому что видать в транзакции все пишется может быть.. если в транзакцию запихнуть ВСЕ - то может быть меделенно, если разумными порциями фиксировать - то будет оК. По крайней мере на 7.7 - так, может и на 8-ке таковое мае буты?
|
|||
29
IamAlexy
14.06.11
✎
00:28
|
(25) ты лучше спроси кто его выпустил...
|
|||
30
Immortal
14.06.11
✎
00:29
|
(28)платформа все херачит в память(читает набор) - памяти не хватает - вылет.
|
|||
31
Лефмихалыч
14.06.11
✎
00:30
|
(29) да тут-то все более-менее понятно - заборостроительный какой-нить межгалактический университет имени Добра
|
|||
32
Reaper_1c
14.06.11
✎
00:30
|
(28) Мае, мае, всяко бывае... кто поумнее - в настройках СУБД пороги эскалации плокировок поправляе...
|
|||
33
Лефмихалыч
14.06.11
✎
00:30
|
(30) моет дождемся каких-нить фактов от отладчика вместо того, чтобы пальцем в небо яростно херачить?
|
|||
34
Reaper_1c
14.06.11
✎
00:30
|
(31) Имени победы бобра над ослом
|
|||
35
Immortal
14.06.11
✎
00:31
|
(32)это пусть dba поправляе, нефиг их работу делать
|
|||
36
Immortal
14.06.11
✎
00:31
|
(33)а чего херачить, проверял-)
|
|||
37
Вопросы Задающий
14.06.11
✎
00:53
|
я пихаю по 25 тыс записей
|
|||
38
Вопросы Задающий
14.06.11
✎
00:53
|
потом обнуляю набор записей
|
|||
39
Вопросы Задающий
14.06.11
✎
00:54
|
в транзакции то же самое, такое же количество...
|
|||
40
Immortal
14.06.11
✎
00:57
|
(38)обнуляю - это зачем?
|
|||
41
Вопросы Задающий
14.06.11
✎
00:59
|
(40) я записываю и обнуляю
|
|||
42
Вопросы Задающий
14.06.11
✎
00:59
|
то есть записывается кусками
|
|||
43
Вопросы Задающий
14.06.11
✎
01:05
|
If Int(counter/25000) = counter/25000 Then
recordset.Write(); Message("Writing of recordset... " + trimall(counter)+ " " +String(CurrentDate())); recordset.Clear(); CommitTransaction(); BeginTransaction(); EndIf; вот такой код |
|||
44
Вопросы Задающий
14.06.11
✎
01:07
|
в конце цикла это все происходит
|
|||
45
Лефмихалыч
14.06.11
✎
01:08
|
(43) во-первых, есть в природе оператор %, а, во-вторых, ты замер запустил? Узнал, какая строчка больше всего времени жрет?
|
|||
46
Вопросы Задающий
14.06.11
✎
01:10
|
(45) да, запустил, больше времени жрет чтение csv файла...
|
|||
47
Вопросы Задающий
14.06.11
✎
01:10
|
я знаю про %, но разве от этого зависит?
|
|||
48
Immortal
14.06.11
✎
01:11
|
(46)ыыыыыыы
|
|||
49
Вопросы Задающий
14.06.11
✎
01:12
|
запись в регистр совсем мало процентов жрет...
|
|||
50
Вопросы Задающий
14.06.11
✎
01:13
|
(48) набор записей обнулять не нужно??
|
|||
51
Immortal
14.06.11
✎
01:14
|
да не, просто (33)прав оказалсо
|
|||
52
Вопросы Задающий
14.06.11
✎
01:15
|
хотя читает довольно резво, у меня в статусную строку номер строки выводится, это все идет очень быстро, тем более с помощью ADODB.Connection
|
|||
53
Вопросы Задающий
14.06.11
✎
01:15
|
но почему тогда при увеличении количества записей такое происходит... хз
|
|||
54
H A D G E H O G s
14.06.11
✎
01:41
|
Собственно.
1) База по сети - таскается вся таблица регистра, чем она больше - тем дольше таскается. 2) Индексы - каждая вставка новой записи требует перестроения индексного дерева. Чем больше записей - тем дольше перестроение. 3) Убрать вывод на экран статусные строки для каждой записи. Выводить для каждых 25000. 4) Инное. p.s. Я не увидел кода |
|||
55
Вопросы Задающий
15.06.11
✎
17:30
|
170 тысяч записей в обычный регистр сведений на 8.2, клиент-серверная версия, импортировались за 1.5 часа. это нормально?
|
|||
56
rs_trade
15.06.11
✎
17:31
|
(55) это долго
|
|||
57
Вопросы Задающий
15.06.11
✎
17:32
|
я использовал транзакции... и периодически очищал recordset... что еще можно сделать?
|
|||
58
Вопросы Задающий
15.06.11
✎
17:33
|
никаких доп. условий... просто импорт из csv файла...
|
|||
59
H A D G E H O G s
15.06.11
✎
17:36
|
(58) что по (54) ?
|
|||
60
Вопросы Задающий
15.06.11
✎
17:38
|
1) не по сети
3) статус убрал |
|||
61
Вопросы Задающий
15.06.11
✎
17:39
|
2) как проверить?
|
|||
62
H A D G E H O G s
15.06.11
✎
17:40
|
(61) Индексы в РС есть?
|
|||
63
Вопросы Задающий
15.06.11
✎
17:41
|
есть
|
|||
64
rs_trade
15.06.11
✎
17:44
|
(55) надо детализацию. на что были потрачены 1.5 часа.
|
|||
65
Вопросы Задающий
15.06.11
✎
17:44
|
на запись в регистр
|
|||
66
Вопросы Задающий
15.06.11
✎
17:44
|
BeginTransaction();
counter = 1; For Each VTLine in ValueTable Do If VT.FindByValue(VTLine.ProducerCode) <> Undefined Then Continue; EndIf; counter = counter + 1; newrow = recordset.Add(); newrow.Klient = Klient; newrow.Quantity = 1; newrow.Description = VTLine.Description; newrow.code = VTLine.ProducerCode; newrow.BP = VTLine.BP; newrow.IsOldItem = false; DiscountGroupString = VTLine.DiscountGroup; Try newrow.DiscountGroup = MapDiscauntGroup[DiscountGroupString].ref; newRow.Price = newRow.BruttoPrice * (100-MapDiscauntGroup[DiscountGroupString].Discount)/100; Except newrow.DiscountGroup = Catalogs.DiscountGroups.Unknown; newRow.Price = newRow.BruttoPrice; EndTry; newrow.Info = VTLine.Info; newrow.Producer = Producer; newrow.TimeStamp = CurDate; NewVTRow = VT.Add(newrow.code); If Int(counter/25000) = counter/25000 Then Status(string(counter)); recordset.Write(); recordset.Clear(); CommitTransaction(); BeginTransaction(); EndIf; EndDo; recordset.Write(); CommitTransaction(); |
|||
67
Вопросы Задающий
15.06.11
✎
17:46
|
вернее на кусок выше
|
|||
68
Вопросы Задающий
15.06.11
✎
17:47
|
recordset = InformationRegisters.Prices.CreateRecordSet();
recordset.Filter.Klient.set(Klient); recordset.Write(); вот что было в начале |
|||
69
H A D G E H O G s
15.06.11
✎
17:50
|
РегистрСведенийНаборЗаписей.<Имя регистра сведений> (InformationRegisterRecordSet.<Имя регистра сведений>)
Записать (Write) Синтаксис: Записать(<Замещать>) Параметры: <Замещать> (необязательный) Тип: Булево. Определяет режим замещения существующей записи в соответствии с текущими установками отбора. Истина - перед записью существующие записи будут удалены. Ложь - записи будут дописаны к уже существующим в информационной базе записям Значение по умолчанию: Истина |
|||
70
rs_trade
15.06.11
✎
17:50
|
Может сам скуль тупит? Счетчики производительности в порядке? Длинна очереди к диску?
|
|||
71
Вопросы Задающий
15.06.11
✎
17:50
|
структура регистра - 5 измерений
Klient Quantity code unit producer |
|||
72
H A D G E H O G s
15.06.11
✎
17:50
|
Чего-то у тебя с кодом не так.
|
|||
73
Вопросы Задающий
15.06.11
✎
17:51
|
(72) я догадываюсь, и поэтому прошу помочь...
|
|||
74
H A D G E H O G s
15.06.11
✎
17:51
|
Отборы как устанавливаются?
|
|||
75
Вопросы Задающий
15.06.11
✎
17:51
|
скуль работает нормально, не тормозит ничего. почти уверен, что в коде дело либо в индексах и тп
|
|||
76
H A D G E H O G s
15.06.11
✎
17:52
|
Просто скорее всего чистится регистр при каждой записи
|
|||
77
Вопросы Задающий
15.06.11
✎
17:52
|
вот один отбор только, по клиенту, чтобы записывать каждый раз цены его заново
recordset = InformationRegisters.Prices.CreateRecordSet(); recordset.Filter.Klient.set(Klient); recordset.Write(); |
|||
78
Вопросы Задающий
15.06.11
✎
17:52
|
нет, чистится только по клиенту, один раз, не в цикле
|
|||
79
rs_trade
15.06.11
✎
17:52
|
по английски не привычно анализировать код ((
|
|||
80
Вопросы Задающий
15.06.11
✎
17:53
|
я понимаю, но так попросили делать, на всякий случай. да и смотрится все-таки как-то привычнее
|
|||
81
H A D G E H O G s
15.06.11
✎
17:53
|
(78) Каждый раз чистится
|
|||
82
H A D G E H O G s
15.06.11
✎
17:54
|
При
recordset.Write(); |
|||
83
H A D G E H O G s
15.06.11
✎
17:54
|
Ибо у тебя отбор по клиенту уже установлен не в цикле и записи по клиенту есть.
|
|||
84
Вопросы Задающий
15.06.11
✎
17:55
|
дык подожди, мне его чего, убрать чтоли из цикла?
|
|||
85
Вопросы Задающий
15.06.11
✎
17:55
|
и оставить только в конце, после цикла?
|
|||
86
H A D G E H O G s
15.06.11
✎
17:57
|
ValueTable у тебя содержит данные по нескольким клиентам?
|
|||
87
Вопросы Задающий
15.06.11
✎
17:58
|
нет
|
|||
88
H A D G E H O G s
15.06.11
✎
18:01
|
Ну так замени
recordset.Write(); на recordset.Write(false); |
|||
89
Вопросы Задающий
15.06.11
✎
18:02
|
где? в цикле? а после цикла тоже?
|
|||
90
Вопросы Задающий
15.06.11
✎
18:04
|
recordset.Write() - у меня в трех местах в коде
первый раз когда отбор по клиенту второй раз когда каждые 25 тыс записывается 3 раз в самом конце |
|||
91
H A D G E H O G s
15.06.11
✎
18:05
|
2 и 3 раз
|
|||
92
Вопросы Задающий
15.06.11
✎
18:05
|
понял, спасибо
насколько это может увеличить скорость? |
|||
93
H A D G E H O G s
15.06.11
✎
18:06
|
(92) На Х.З. единиц.
|
|||
94
H A D G E H O G s
15.06.11
✎
18:06
|
Структуру регистра расскажи.
Есть ли РЛС ? |
|||
95
Вопросы Задающий
15.06.11
✎
18:07
|
структура регистра - 5 измерений
Klient Quantity code unit producer РЛС - это что? |
|||
96
Вопросы Задающий
15.06.11
✎
18:08
|
есть еще ресурсы, цена и тп
|
|||
97
H A D G E H O G s
15.06.11
✎
18:08
|
(95) Пилят.
Тип измерений, наличие индексов. |
|||
98
H A D G E H O G s
15.06.11
✎
18:09
|
(96) Строки большой длины?
|
|||
99
Вопросы Задающий
15.06.11
✎
18:10
|
(98) нет
|
|||
100
Вопросы Задающий
15.06.11
✎
18:10
|
тип измерений
Klient справочник Quantity число 15.2 code текст unit справочник producer справочник |
|||
101
Вопросы Задающий
15.06.11
✎
18:11
|
индексы есть в code
|
|||
102
H A D G E H O G s
15.06.11
✎
18:13
|
(101) Убери для замера
|
|||
103
Вопросы Задающий
15.06.11
✎
18:14
|
ок. а еще есть индексы в ресурсах, их тоже убрать?
|
|||
104
H A D G E H O G s
15.06.11
✎
18:14
|
(103) Тоже
|
|||
105
Вопросы Задающий
15.06.11
✎
18:15
|
ок, так и сделаю, спасибо!
|
|||
106
Вопросы Задающий
15.06.11
✎
18:16
|
каждый индексированный атрибут затормаживает загрузку тоже да?
|
|||
107
H A D G E H O G s
15.06.11
✎
18:24
|
(106)
Почитать для общего развития http://www.sql.ru/articles/mssql/03013101Indexes.shtml#13 Особенно про фрагментацию и статистику. |
|||
108
H A D G E H O G s
15.06.11
✎
18:24
|
(106) Да
|
|||
109
Вопросы Задающий
15.06.11
✎
18:27
|
СПАСИБО!
|
|||
110
H A D G E H O G s
16.06.11
✎
11:15
|
Астрологи объявили неделю быстрой записи в регистр сведений.
Поголовье индексов регистра снижено вдвое. |
|||
111
H A D G E H O G s
16.06.11
✎
11:15
|
(0) Автор, помогло?
|
|||
112
Вопросы Задающий
16.06.11
✎
12:20
|
(111) спасибо за интерес! сразу откомментирую, когда проверю. дело в том, что как раз после твоих последних советов в офисе где сервак, была лажа со светом, жду когда починят
|
|||
113
H A D G E H O G s
16.06.11
✎
13:16
|
(112) Запах серы отлично перебивает запах свежезаваренного кофе.
|
|||
114
Вопросы Задающий
16.06.11
✎
14:07
|
(113) пока что 100 тыс дольше, чем за полчаса грузит...
|
|||
115
Вопросы Задающий
16.06.11
✎
14:08
|
но индексы я еще не убирал, попробовал только с False при записи Recordset
|
|||
116
H A D G E H O G s
16.06.11
✎
14:28
|
(115) Измерение
Code у тебя какой длины? |
|||
117
Вопросы Задающий
16.06.11
✎
14:29
|
20
|
|||
118
H A D G E H O G s
16.06.11
✎
14:33
|
(117) Это Прискорбно.
ОсновнойОтбор стоит у него? |
|||
119
Вопросы Задающий
16.06.11
✎
14:34
|
lf
|
|||
120
Вопросы Задающий
16.06.11
✎
14:34
|
ага
|
|||
121
H A D G E H O G s
16.06.11
✎
14:34
|
(120) Убирай его (Основной отбор) отовюду, откуда можно, ибо:
|
|||
122
Вопросы Задающий
16.06.11
✎
14:37
|
понял
|
|||
123
Вопросы Задающий
16.06.11
✎
14:37
|
но это потом не будет тормозить поиск?
|
|||
124
H A D G E H O G s
16.06.11
✎
14:40
|
||||
125
H A D G E H O G s
16.06.11
✎
14:41
|
Твое измерение Code имеет размер в 40 байт и юзается в 2 встроенных индексах - индексе измерений и индексе основного отбора.
Это жестоко |
|||
126
H A D G E H O G s
16.06.11
✎
14:41
|
Из основного отбора я бы убрал все, кроме Client
|
|||
127
Вопросы Задающий
16.06.11
✎
14:41
|
а если я вообще поудаляю везде основной отбор, как это отразится потом на поиске?
|
|||
128
Вопросы Задающий
16.06.11
✎
14:42
|
понял! спасибо!
|
|||
129
tdm
16.06.11
✎
14:42
|
(0) структуру регистра надо пилить для начала)
|
|||
130
H A D G E H O G s
16.06.11
✎
14:45
|
Еще вопрос - что делает Quantity (количество) в измерении ?
|
|||
131
Вопросы Задающий
16.06.11
✎
14:45
|
количество единиц за цену
|
|||
132
H A D G E H O G s
16.06.11
✎
14:48
|
(131) Ясно. Но как то логичнее тогда поменять местами цену (в измерения) и количество (в ресурсы). Но это лирика.
|
|||
133
H A D G E H O G s
16.06.11
✎
14:49
|
А что такое Code в регистре?
|
|||
134
Вопросы Задающий
16.06.11
✎
14:49
|
Код товара (данный поставщиком)
|
|||
135
Вопросы Задающий
16.06.11
✎
15:39
|
сейчас 100 тысяч за полчаса записалось. это нормально?
|
|||
136
H A D G E H O G s
16.06.11
✎
15:54
|
(135) Нет
|
|||
137
H A D G E H O G s
16.06.11
✎
15:56
|
Если конфа небольшая - скинь dt-шник и исходник данных. Если не критично-конфидициально.
|
|||
138
Serginio1
16.06.11
✎
16:59
|
Я пишу напрямую. Скопом по миллиону записей из текстового файла. По 30 минут если новый (индексы тормозят) и минуты по 2-5 при обновлении
|
|||
139
H A D G E H O G s
16.06.11
✎
17:19
|
(138) nvarchar(40) (в индексе!) имеет длину 40 байт фиксированно, либо реальную длину ?
|
|||
140
H A D G E H O G s
16.06.11
✎
17:22
|
Просто может товарисчу на справочник перейти, как с НомераГТД сделано.
|
|||
141
Serginio1
16.06.11
✎
17:45
|
(140) Я работаю с регистрами сведений, единственно, что там нужно симплкей прописать при вставке
v8: _SimpleKey и его установка |
|||
142
H A D G E H O G s
16.06.11
✎
17:49
|
(141) Чего то я не верю про такие различия по времени в 1С и SQL
|
|||
143
Serginio1
16.06.11
✎
17:59
|
Не то слово. Раньше простенький прайс грузился часами, да и сейчас кое где анахронизмы остались и грузится через тз, записей несколько тысяч по скорости сопостаимы со 100 тысячами. В 1с ненормально сделано merge, а по одной записи тоже оочень долго. Поверь, не от хорошей жизни перешел на прямую запись в SQL, зато сейчас все рады, т.к. такие прайсы грузятся по многу раз на дню.
Отсутствие merge в 1С считаю большим минусом. А вот использование внешнего источника очень хорошо, только интересно как у них с драйверами по 64 битные оси? Год назад неподдерживались. |
|||
144
H A D G E H O G s
16.06.11
✎
18:04
|
Че такое merge?
|
|||
145
Вопросы Задающий
16.06.11
✎
18:07
|
(137) - сама запись в регистр уже летает, спасибо!
тормозит теперь только одна фигня - я записываю в регистр порциями ведь. а код поставщика - уникальным должен быть. иногда поставщики высылают прайсы, где дважды один и тот же код есть. и получается, что запись скопом в регистр невозможна. вот мой код counter = 1; record.MoveNext(); BeginTransaction(); while record.EOF = 0 do counter = counter + 1; Try newrow = ValueTable.Add(); newrow.ProducerCode = Trimall(StrReplace(record.Fields(1).Value,char(160),"")); If TableWithProducerCodes.FindByValue(newrow.ProducerCode) <> Undefined Then Continue; EndIf; newrow.ItemName = Trimall(record.Fields(2).Value); Price = record.Fields(3).Value; newrow.Price = number(StrReplace(Price,char(1026),"")); NewProducerCodeinTable = TableWithProducerCodes.Add(newrow.ProducerCode); If Int(counter/50000) = counter/50000 Then CommitTransaction(); BeginTransaction(); EndIf; record.MoveNext(); Except Message("Error"); record.MoveNext(); EndTry; EndDo; |
|||
146
Вопросы Задающий
16.06.11
✎
18:08
|
If TableWithProducerCodes.FindByValue(newrow.ProducerCode) <> Undefined Then
Continue; EndIf; вот тут все и тормозит |
|||
147
H A D G E H O G s
16.06.11
✎
18:08
|
(145) Xnj pyfxbn ktnftn&
|
|||
148
H A D G E H O G s
16.06.11
✎
18:08
|
Что значит летает?
У меня, с упрощениями, в такой же по структуре регистр 25000 записей пишется за 10-15 секунд, к примеру. |
|||
149
H A D G E H O G s
16.06.11
✎
18:11
|
(146) ВОООТ. Блеать!.
|
|||
150
H A D G E H O G s
16.06.11
✎
18:12
|
Агрххх.
|
|||
151
H A D G E H O G s
16.06.11
✎
18:12
|
Таблицу значений с индексированной колонкой!
|
|||
152
H A D G E H O G s
16.06.11
✎
18:13
|
Чтож ты мозг то насиловал то.
|
|||
153
H A D G E H O G s
16.06.11
✎
18:14
|
(143) Че такое merge - я понял. Нету - ну и фиг с ним.
Ты дошел до смысла _SimpleKey ? |
|||
154
Вопросы Задающий
16.06.11
✎
18:14
|
не ругайся ))
|
|||
155
Вопросы Задающий
16.06.11
✎
18:15
|
порекомендуй плиз, как это оптимизировать!
|
|||
156
Serginio1
16.06.11
✎
18:16
|
(146) Я гружу в темп таблицу, если нужно удаляю дубли в ней.
|
|||
157
Вопросы Задающий
16.06.11
✎
18:17
|
(156) ну загружу я коды в другую таблицу, сверну ее, а потом? я ж не могу по цене сворачивать
|
|||
158
SUA
16.06.11
✎
18:18
|
(146)замени на поиск по структуре - на порядок быстрее
|
|||
159
H A D G E H O G s
16.06.11
✎
18:18
|
(157) Удалишь строки, в которых дубли по коду.
Но лучше вместо списка - индексированную таблицу! |
|||
160
H A D G E H O G s
16.06.11
✎
18:20
|
(158) Нихрена.
|
|||
161
Вопросы Задающий
16.06.11
✎
18:23
|
(160) это таблицу значений что ли? не можешь код кусочек скинуть, как бы получше?
|
|||
162
SUA
16.06.11
✎
18:25
|
(158)
лично проверял ТЗ ~2000 строк, специально не индексировалась поиск значения по колонке через НайтиЗначение медленнее чем через НайтиСтроки на порядок (автоматически индексируется сама - возможно) |
|||
163
H A D G E H O G s
16.06.11
✎
18:26
|
(162) Ниче само не индексируется.
|
|||
164
SUA
16.06.11
✎
18:26
|
проиндексировать колонку конечно еще быстрее
|
|||
165
Вопросы Задающий
16.06.11
✎
18:27
|
(163) Ежик, подскажи код плииизз ;)
|
|||
166
Вопросы Задающий
16.06.11
✎
18:33
|
так, добавил ТЗ, в ней намного быстрее идет поиск?
|
|||
167
Serginio1
16.06.11
✎
18:34
|
(153) До конца не дошел, но по всей верояности это сделано как уникальный ключ, вроде как для обмена нужен но точно не знаю. Уже где то 1.5 года полет нормальный
|
|||
168
H A D G E H O G s
16.06.11
✎
18:35
|
TableWithProducerCodes=Новый ТаблицаЗначений;
TableWithProducerCodes.Колонки.Добавить("ProducerCode",Новый ОписаниеТипов("Строка",,Новый КвалификаторыСтроки(20,ДопустимаяДлина.Переменная))); TableWithProducerCodes.Индексы.Добавить("ProducerCode"); |
|||
169
H A D G E H O G s
16.06.11
✎
18:36
|
Это ты создашь таблицу.
В ней и ищи |
|||
170
Вопросы Задающий
16.06.11
✎
18:36
|
так и сделал уже! спасибо! ща проверю!
|
|||
171
Вопросы Задающий
16.06.11
✎
18:36
|
ооо, уже вижу, что летает практически ;)
|
|||
172
Вопросы Задающий
16.06.11
✎
18:37
|
ща посмотрим за сколько загрузится
|
|||
173
H A D G E H O G s
16.06.11
✎
18:38
|
(162) НайтиСтроки() работает с индексами тогда, когда точно ВСЕ строки поиска индексированны. Частично - не работает.
|
|||
174
H A D G E H O G s
16.06.11
✎
18:39
|
(162) Я в курсе, что Структура индексированна, НО!.
Когда у 1С подходит к концу память - начинается жесть. Первые элементы извлекаются мгновенное, конечные - по нескольку минут. Посмотри на регламентированной отчетности, декларации какие-нибудь строк так на 40000-50000. |
|||
175
H A D G E H O G s
16.06.11
✎
18:41
|
(174) Кроме того, очистка ИМЕННО структуры - некорректна, физически память освобождается, но через некоторое время 1С вылетает с out of memory (что 8.1, что 8.2)
|
|||
176
H A D G E H O G s
16.06.11
✎
18:41
|
Все, я домой.
Ауфтор, пеши есчо! |
|||
177
Вопросы Задающий
16.06.11
✎
18:42
|
спасибо тебе!
|
|||
178
Вопросы Задающий
16.06.11
✎
18:42
|
напишу напишу ))
|
|||
179
Вопросы Задающий
17.06.11
✎
11:10
|
итог на сейчас - 411.469 штук меньше, чем за 5 минут!!!
|
|||
180
H A D G E H O G s
17.06.11
✎
11:43
|
(179) Плохо.
Но уже лучше |
|||
181
Вопросы Задающий
17.06.11
✎
17:50
|
(180) значительно лучше, я доволен очень ;) спасибо за поддержку. буду писать еще ;)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |