通过LAN网络的ADODB.Connection非常慢>需要更快的速度

时间:2018-04-25 07:54:49

标签: ms-access networking ado

我正在使用ADODB.Connection对象“Provider = Microsoft.Jet.OLEDB.4.0; Data Source = test.mdb; Jet OLEDB:Database Password = test; Persist Security Info = False;”。

db_obj.Open(db_conn_string)的速度非常不同。

  • local:0.05秒
  • 通过局域网:1 - 1.5秒

之后我使用了一个select语句。

我按速度检查每条线路。我唯一的减速是开放命令。

如何提高网络速度?

由于

1 个答案:

答案 0 :(得分:0)

出于好奇,你为什么如此担心连接速度仅仅几秒之间的差异?

您是在创建这些连接并在整个代码中不断删除这些连接的问题,因此额外的一秒左右会增加几分钟吗?

如果是这样,您的目标可能需要改进您的连接使用本身。而不是不断地断开连接,可能只是让它保持活跃状态​​。

另外,在旁注中,您可能需要重新考虑将密码保存在连接字符串中(假设这不仅仅是个人用途或其他)。

除了这些之外,你的连接方法与从单一镜头角度来看一样好。

还有一些其他选项,例如将连接作为记录集打开,但速度在开放端不会有任何显着增加。

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

据我所知,除此之外,您唯一真正的解决方案是提高物理网络本身的速度(如果合理的话)。