VB6 Recordset "Open" занимает больше времени, чтобы показать результат по сравнению с бэкэндом - PullRequest
0 голосов
/ 25 февраля 2012

Я использую запрос для поиска данных.Тот же запрос занимает меньше времени, т. Е. 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

1 Ответ

2 голосов
/ 26 февраля 2012

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

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

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

...