【问题标题】:ADODB.Connection over LAN network very slow > more speed neededADODB.LAN 网络上的连接非常慢 > 需要更高的速度
【发布时间】:2018-04-25 07:54:48
【问题描述】:

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

db_obj.Open(db_conn_string) 的速度差别很大。

  • 本地:0.05 秒
  • 通过 LAN 网络:1 - 1.5 秒

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

我对每个速度检查的每一行都进行测试。我唯一慢下来的是 open 命令。

任何想法如何通过网络提高速度?

谢谢

【问题讨论】:

    标签: ms-access networking ado


    【解决方案1】:

    只是出于好奇,你为什么这么担心连接速度只有几秒钟的差异?

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

    如果是这样,您的目标可能需要改进连接使用本身。与其不断断开连接,不如保持它处于活动状态。

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

    撇开这些不谈,你的连接方法与单次拍摄的视角一样好。

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

    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
    

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

    【讨论】:

    • 我用它来进行权限管理,所以在检查完成之前用户会被屏蔽。如果没有什么比以这种方式打开连接更快的了,那您是对的,这仅取决于 LAN 速度。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-15
    • 1970-01-01
    • 2013-11-04
    相关资源
    最近更新 更多