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

求助求助!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 咨询一下有关于王者荣耀赢藏战绩
  • ¥100 求购一套带接口实现实习自动签到打卡
  • ¥50 MacOS 使用虚拟机安装k8s
  • ¥500 亚马逊 COOKIE我如何才能实现 登录一个亚马逊账户 下发新 COOKIE ..我使用下发新COOKIE 导入ADS 指纹浏览器登录,我把账户密码 修改过后,原来下发新COOKIE 不会失效的方式
  • ¥20 玩游戏gpu和cpu利用率特别低,玩游戏卡顿
  • ¥25 oracle中的正则匹配
  • ¥15 关于#vscode#的问题:把软件卸载不会再出现蓝屏
  • ¥15 vimplus出现的错误
  • ¥15 usb无线网卡转typec口
  • ¥30 怎么使用AVL fire ESE软件自带的优化模式来优化设计Soot和NOx?