|
Долго получает данные из другой базы (через COM подключение) | ☑ | ||
---|---|---|---|---|
0
ac13
09.04.19
✎
17:30
|
Подключась к базе и получаю из нее данные через запросы
... База = Соединение.Connect(Параметры); Запрос = База.NewObject("Запрос"); Запрос.Текст = "..."; Выборка = Запрос.Выполнить.Выбрать(); Выборка из таких запросов обрабатывается долго, хотя данных не так уж и много. Процесс можно как-то ускорить или это нормально, когда выборка из другой базы? |
|||
1
ptiz
09.04.19
✎
17:33
|
(0) "Выборка из таких запросов обрабатывается долго" - смотря что в обрабатывающем коде понаписано.
|
|||
2
ac13
09.04.19
✎
17:35
|
(1) Выборка.Количество() = 500, элементарно
Пока Выборка.Следующий() Цикл Сообщить("123"); КонецЦикла; будет долго ... |
|||
3
Nuobu
09.04.19
✎
17:36
|
(2) А выгрузить()?
|
|||
4
ac13
09.04.19
✎
17:41
|
(3) Выгрузить не пробовал
|
|||
5
Cyberhawk
09.04.19
✎
17:41
|
Ну попробуй не выборку обходить, а ТЗ
|
|||
6
Вафель
09.04.19
✎
17:42
|
получать только примитивные типы из запроса: число, строка, дата
|
|||
7
ac13
09.04.19
✎
17:43
|
(5) сейчас попробую, (6) да да
|
|||
8
Вафель
09.04.19
✎
17:44
|
(7) тз не поможет, тк это будет ком тз, а не тз приемника
|
|||
9
Cyberhawk
09.04.19
✎
17:47
|
(8) Большая выборка-то в файлики будет сбрасываться, а ТЗ - не будет
|
|||
10
Cyberhawk
09.04.19
✎
17:49
|
На специалисте за такое насилование ОЗУ (выгрузка в ТЗ) конечно же балл снимут, но в жизни оно по-всякому бывает)
|
|||
11
ac13
09.04.19
✎
17:49
|
(8) ну да, че-то быстрее не стало, как бы не медленнее
|
|||
12
Cyberhawk
09.04.19
✎
17:50
|
Так ты замером код замерь, что занимает дольше времени - Следующий() или шаг цикла
|
|||
13
ac13
09.04.19
✎
17:52
|
(12) выборка результата запроса быстрее
|
|||
14
Вафель
09.04.19
✎
17:52
|
(9) Выборка - такое же насилование ОЗУ. в файлики только на 32 битах
|
|||
15
Nuobu
09.04.19
✎
17:53
|
(11) Попробуй еще сделать функцию, которая сделана полностью в базе, куда ты обращаешься, и пусть она ТЗ с примитивными типами оборачивает в "ЗначениеВСтрокуВнутр".
|
|||
16
Провинциальный 1сник
09.04.19
✎
17:54
|
Это да. Вообще конечно странно это. Я ранее предполагал, что выборка это открытый курсор на sql-сервере. Оказалось это заполненный буфер в памяти.
|
|||
17
Вафель
09.04.19
✎
17:55
|
никогда выборка в 1с не была открытым курсором
|
|||
18
ac13
09.04.19
✎
17:58
|
ладно, пусть пока будет так, на самом деле вся обработка длится секунд 30, потрепеть можно
|
|||
19
Cyberhawk
09.04.19
✎
17:59
|
(13) Ты отвечаешь на какой-то незаданный вопрос
|
|||
20
Cyberhawk
09.04.19
✎
18:06
|
(14) Спс
|
|||
21
TormozIT
гуру
10.04.19
✎
06:57
|
||||
22
Жан Пердежон
10.04.19
✎
07:00
|
(10) и давно на специалисте через COM заставляют данные гонять?
|
|||
23
Провинциальный 1сник
10.04.19
✎
07:16
|
(8) Финт ушами с ЗначениеВСтрокуВнутр туда-сюда - и готова ТЗ приемника
|
|||
24
Cyberhawk
10.04.19
✎
08:33
|
(22) Хз о чем ты. Походу ты что-то напутал.
|
|||
25
ac13
10.04.19
✎
08:47
|
(21) спасибо!
|
|||
26
Кирпич
10.04.19
✎
08:59
|
(23) Вот вот. А еще лучше ЗначениеВФайл(), а потом ЗначениеИзФайла()
|
|||
27
Кирпич
10.04.19
✎
09:00
|
чтобы памяти не ужирало, если выборка большая
|
|||
28
ac13
10.04.19
✎
10:37
|
(23) (26) это надо делать в базе источнике (откуда данные выгружаются) и потом из обработки в базе приемнике обращаться к модулю базы источника, к которой подключаюсь?
|
|||
29
Провинциальный 1сник
10.04.19
✎
10:41
|
(28) НашаТабЗнач=ЗначениеИзСтрокиВнутр(БАЗА.ЗначениеВСтрокуВнутр(ЧужаяТабЗнач))
|
|||
30
Провинциальный 1сник
10.04.19
✎
10:42
|
И вообще таким финтом лучше всё передавать, особенно числа - чтобы не получить потери точности.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |