Вход | Регистрация

1С:Предприятие ::

Метки: 

Обход результата запроса, через "ADODB.Connection" долго работает

Я
   TDI
 
13.12.17 - 11:25
Коллеги, может кто сталкивался.
Выполняется запрос к SQL базе через ADODB.Connection
Само выполнение запроса происходит достаточно быстро.

RecordSet = Соединение.Execute(ТекстЗапросаADO);

Но вот его обход - очень долго

    Пока RecordSet.EOF() = 0 Цикл
........
        RecordSet.MoveNext();  
    КонецЦикла;


И в основном всё время теряется на команде "RecordSet.MoveNext()"

Может кто знает, из-за чего такие большие задержки, и как можно ускорить процесс обхода ?
 
  Рекламное место пустует
   lodger
 
1 - 13.12.17 - 11:27
выгрузи в ТЗ.
   Петрович 2018
 
2 - 13.12.17 - 11:27
(0) Выгружай в COMSafeArray
   TDI
 
3 - 13.12.17 - 11:32
а где почитать пример  работы с COMSafeArray ?
   Сияющий в темноте
 
4 - 13.12.17 - 11:35
Просто, при каждом перемещении серверу отправляется команда и он выдаёт порцию данных текущей строки.
   TDI
 
5 - 13.12.17 - 11:41
(4)да, только вот как без MoveNext получить значение результата выборки ?
   Петрович 2018
 
6 - 13.12.17 - 11:44
   TDI
 
7 - 13.12.17 - 11:53
(6)
да, так работает .GetRows()
но тоже очень медленно.
По времени тоже самое что и перебор через MoveNext()
:(
   бомболюк
 
8 - 13.12.17 - 11:55
а чему у нас равно Соединение.CursorLocation?
   TDI
 
9 - 13.12.17 - 11:58
(8)
RecordSet.CursorLocation = 2
   TDI
 
10 - 13.12.17 - 11:58
Соединение.CursorLocation = 2
 
  Рекламное место пустует
   бомболюк
 
11 - 13.12.17 - 12:02
серверный значит, ну он вроде побыстрее, но поиграй им, сделай 3 (клиентский), вдруг лучше станет. Еще параметр Соединение.LockType поглядеть бы, его если что в 1.
   Сияющий в темноте
 
12 - 13.12.17 - 12:02
А что у вас в запросе ? Если там какие-то BLOB-поля выбираются, то ничего удивительного, так как SQL при выполнении запроса просто читает номер BLOB, а само поле будет передавать потом, когда его запросят в результат.
   lodger
 
13 - 13.12.17 - 12:07
(7) хочется быстрее - откажитесь от ADODB.
быстро и легко в разработке - тяжело и медленно в работе.
   TDI
 
14 - 13.12.17 - 12:39
(13) а какие ещё есть варианты получения?
Через ВнешнийИсточник тоже медленно
   НЕА123
 
15 - 13.12.17 - 12:44
(0)
>Само выполнение запроса происходит достаточно быстро.
смотри, сколько выполняется первый MoveNext().
   TDI
 
16 - 13.12.17 - 12:55
Форма.Форма.Форма    81    81    24,309178    RecordSet.MoveNext();    81,15
    Форма.Форма.Форма    46    1    5,563334    RecordSet = Соединение.Execute(ТекстЗапросаADO);    18,57
    Форма.Форма.Форма    72    82    0,075360    Пока RecordSet.EOF() = 0 Цикл    0,25


Список тем форума
  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует