加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程 > 正文

sql – 增进Ms Access Insert机能

发布时间:2021-01-17 05:04:00 所属栏目:编程 来源:网络整理
导读:我正在行使MS Access 2010,分为前端/后端;在具有16个表的收集驱动器(WAN)上,个中一个用户表(130万)首要用于用户信息,而且不会插入大量其他表,天天最多可以吸取2000个表. 我已经可以或许优化大大都读/选查询.固然我的代码中的一大块如下所示.这可以天天用于最多200

我正在行使MS Access 2010,分为前端/后端;在具有16个表的收集驱动器(WAN)上,个中一个用户表(130万)首要用于用户信息,而且不会插入大量其他表,天天最多可以吸取2000个表.

我已经可以或许优化大大都读/选查询.固然我的代码中的一大块如下所示.这可以天天用于最多2000次迭代.

Do Until rec.EOF
    Dim vSomeId As Integer
    vSomeId = rec!SomeId

    'StrSQL = StrSQL & "INSERT INTO TransportationDetails ( TransportationId,SomeId)" & _
        '"VALUES(" & vTransportationId & "," & vSomeId & ");"

    StrSQL = "INSERT INTO TransportationDetails ( TransportationId,SomeId)" & _
        "VALUES(" & vTransportationId & "," & vSomeId & ");"

    DoCmd.SetWarnings False
    DoCmd.RunSQL (StrSQL)
    DoCmd.SetWarnings True


    rec.Edit
    rec!SomeBoolean = rec!SomeOtherBoolean 
    rec.Update
    rec.MoveNext
Loop

我的方针是镌汰挪用db以插入全部值的次数.而且MS ACCESS不支持在语句中具有多于1个查询,正如我在代码的注释部门中实行的那样.我还以为记录集upate要领淹灭大量时刻,假如任何人可以提议更新记录集的更好要领.

有什么步伐我可以诱骗Access插入&通过SQL查询或任何其他会见成果更新到db的更少掷中.可能无论怎样都要优化,偶然也许必要长达30分钟.镌汰到至少2-5分钟是吻合的.

附:
我无法切换到SQL Server,这绝对不行能.我知道它可以以更优化的方法通过sql server完成,Access不该该用于WAN,但我没有谁人选项.

解:
我选择了Andre和Jorge的办理方案.时刻镌汰了17倍.固然Albert的谜底也是正确的,由于我发明我的首要题目是轮回中的sql语句.将记录齐集的编辑变动为sql并不会对时刻身分发生太大影响.

办理要领

假如你此刻有
S = "SELECT SomeId,SomeBoolean,SomeOtherBoolean " & _
    "FROM recTable WHERE someCriteria"
Set rec = DB.OpenRecordset(S)

将你的告诉改为

"INSERT INTO TransportationDetails (TransportationId,SomeId) " & _
"SELECT " & vTransportationId & ",SomeId " & _
"FROM recTable WHERE someCriteria"

"UPDATE recTable SET SomeBoolean = SomeOtherBoolean WHERE someCriteria"

为了进步机能,请尽也许停止在Recordset上轮回.行使对整个荟萃举办操纵的SQL语句.

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读