weixin_57992912 2021-05-07 14:31 采纳率: 0%
浏览 88

求助求助!VBA+ADO+recordset+CopyFromRecordset很慢,匹配一个要十几

求助求助!VBA+ADO+recordset+CopyFromRecordset很慢,匹配一个要十几秒,数据源表有四五十万行,代码如图?
  • 写回答

1条回答 默认 最新

  • 码农阿豪@新空间代码工作室 Java领域优质创作者 2024-07-12 20:42
    关注
    让阿豪来帮你解答,本回答参考chatgpt3.5编写提供,如果还有疑问可以评论或留言
    对于处理大量数据时速度较慢的问题,可以尝试以下方法来优化VBA代码:
    1. 使用ADODB.Command对象执行SQL语句,而不是通过ADODB.Recordset来获取数据。这样可以减少内存的使用,提高效率。可以通过以下示例代码来执行SQL语句:
    Dim conn As ADODB.Connection
    Dim cmd As ADODB.Command
    Dim rs As ADODB.Recordset
    Set conn = New ADODB.Connection
    conn.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\yourdatabase.accdb"
    Set cmd = New ADODB.Command
    cmd.ActiveConnection = conn
    cmd.CommandText = "SELECT * FROM YourTable WHERE Condition = 'yourCondition'"
    cmd.CommandType = adCmdText
    Set rs = cmd.Execute
    
    1. 将查询结果分批处理,而不是一次性将全部数据加载到内存中。可以通过每次获取一定数量的数据来降低内存占用,提高速度。以下是一个示例代码:
    Dim conn As ADODB.Connection
    Dim rs As ADODB.Recordset
    Set conn = New ADODB.Connection
    conn.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\yourdatabase.accdb"
    Set rs = New ADODB.Recordset
    rs.Open "SELECT * FROM YourTable", conn, adOpenForwardOnly, adLockReadOnly
    Do Until rs.EOF
        '处理数据
        rs.MoveNext
    Loop
    rs.Close
    
    1. 使用适当的索引来优化查询速度,确保查询的字段上有合适的索引。可以通过在数据库表中创建索引来加快查询速度,降低整体数据处理的时间。 通过以上优化方法,可以提高VBA处理大量数据时的效率和速度。希望对您有帮助。
    评论

报告相同问题?

悬赏问题

  • ¥15 我这个代码哪里有问题 acm 平台上显示错误 90%,我自己运行好像没什么问题
  • ¥50 C#编程中使用printDocument类实现文字排版打印问题
  • ¥15 找会编程的帅哥美女 可以用MATLAB里面的simulink编程,用Keil5编也可以。
  • ¥15 已知隐函数其中一个变量τ的具体值,求另一个变量
  • ¥15 r语言Hurst指数
  • ¥15 Acrn IVSHMEM doorbell问题
  • ¥15 yolov5中的val测试集训练时数量变小问题
  • ¥15 MPLS/VPN实验中MPLS的配置问题
  • ¥15 materialstudio氢键计算问题
  • ¥15 echarts图表制作