ADODB. Соединение по локальной сети очень медленное> требуется больше скорости - PullRequest
0 голосов
/ 25 апреля 2018

Я использую объект ADODB.Connection с "Provider = Microsoft.Jet.OLEDB.4.0; Источник данных = test.mdb; Jet OLEDB: Пароль базы данных = test; Сохранение информации о безопасности = False;".

Скорость db_obj.Open (db_conn_string) очень отличается.

  • местный: 0,05 с
  • по сети LAN: 1 - 1,5 с

После этого я использую оператор выбора.

Я проверяю каждую строку за каждую проверку скорости. Мое единственное замедление - команда открытия.

Есть идеи, как увеличить скорость по сети?

Спасибо

1 Ответ

0 голосов
/ 27 апреля 2018

Просто из любопытства, почему вас так беспокоит разница между простыми секундами в скорости соединения?

Является ли проблемой то, что вы создаете эти соединения и отбрасываете их постоянно по всему коду, поэтому дополнительная секундаили так добавляет до нескольких минут?

Если так, ваша цель может заключаться в уточнении использования вашего соединения.Вместо того, чтобы постоянно сбрасывать соединение, возможно, просто оставляйте его активным.

Кроме того, отметим, что вы можете переосмыслить сохранение пароля в строке соединения (при условии, что это не просто личное использование или что-то еще).

Помимо этого, ваш метод соединения примерно такой же, как и в случае с одним выстрелом.

Есть и другие варианты, такие как открытие соединения как набора записей, носкорость не будет заметно увеличиваться со стороны открытия.

Dim rs1 As New ADODB.Recordset
Dim sConn As String
Dim sSQL As String

FilePath = "[File Location]"
sConn = "Provider=Microsoft.jet.oledb.4.0;Data source=" & _
     FilePath & "\[DatabaseName].[Extension]"

conn.Open sConn
Set conn = CreateObject("ADODB.Connection")
Set rs1 = CreateObject("ADODB.Recordset")
sSQL = "SELECT * FROM Table1"
rs1.CursorLocation = adUseClient
rs1.Open sSQL, conn, adOpenDynamic, adLockPessimistic 'lock depending on user requirements

rs1.MoveFirst
Do While rs1.EOF = False
    'Code here
    rs1.MoveNext
Loop

'For additional manipulation
rs1.MoveFirst
Do While rs1.EOF = False
    'Code here
    rs1.MoveNext
Loop

rs1.Close
Set rs1 = Nothing
Set conn = Nothing

Насколько мне известно, кроме этого, ваше единственное реальное решение - это увеличить скорость самой физической сети (еслиправдоподобно).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...