Открытие набора записей VB6 требует больше времени для отображения результата по сравнению с серверной частью

Я использую запрос для поиска данных. Тот же запрос занимает меньше времени, т.е. 2 секунды, для выполнения из бэкэнда. Но в коде тот же запрос занимает больше времени, т.е. 30 секунд в Recordset.open. База данных: Sybase

Спасибо

Пример кода:

    Dim rsRoute As New ADODB.Recordset 
    ---------------------------------------------

    If rsRoute.State = 1 Then rsRoute.Close
    Set rsRoute = New ADODB.Recordset
    Set rsRoute.ActiveConnection = con
    rsRoute.CursorLocation = adUseClient
    rsRoute.CursorType = adOpenKeyset
    rsRoute.LockType = adLockBatchOptimistic
    strCmd = " select * from Table where CoumnVal =1 "
    con.Errors.Clear
    On Error Resume Next
    rsRoute.Open strCmd

person Preeti    schedule 25.02.2012    source источник
comment
Вы можете получить больше помощи, если покажете код. Как вы открываете соединение с базой данных? Как вы открываете набор записей? Давайте посмотрим на пример кода (или реальный код, если можете).   -  person C-Pound Guru    schedule 25.02.2012


Ответы (1)


Существует несколько типов CursorsType и две разновидности CursorLocation. В базе данных Sybase (в свое время ASE) производительность сильно различалась в зависимости от того, что вы выберете. Попробуйте курсоры как на стороне клиента, так и на стороне сервера и посмотрите, что произойдет.

Если вам нужно просто прокрутить результат один раз, выберите тип курсора adOpenForwardOnly. Обычно это приводит к лучшей производительности.

РЕДАКТИРОВАТЬ: на основе кода, который вы разместили, попробуйте а) ничего не блокировать (например, LockType), б) с помощью курсора adOpenForwardOnly, а) сохранить курсор на сервере (adUseServer)

person AngryHacker    schedule 26.02.2012